Как хранить joda.money в MySQL

У меня есть класс, который имеет атрибут типа данных joda.money. Как я могу сопоставить этот атрибут в MySQL.

мой класс это:

@Table (name = "products") открытый класс Product(){ @Column(name="name") Имя строки; @Column(name="money") Деньги деньги; }

Я использую весенний спящий

Может кто-нибудь сказать, как хранить эту модель в MySQL?

1 ответ

Решение

У вас есть больше вариантов здесь.

  1. Вы можете сделать два поля, представляющих Йода Money, BigDecimal на сумму и String за валюту. Затем создайте временное синтетическое поле Money и создайте его в геттере (см. пример ниже).
  2. Вы можете реализовать свой собственный UserType и обеспечить сериализацию / десериализацию самостоятельно. См. Javadoc UserType и документацию Пользовательские типы с использованием org.hibernate.usertype.UserType. Взгляните на эту реализацию CompositeUserType,
  3. Вы можете включить проект Jadira Usertypes, который предоставляет Joda Money поддержка Hibernate (я никогда не пробовал в любом случае)

    @Entity @Table(name = "products")
    public class Product {
        @Basic @Column
        private BigDecimal amount;
    
        @Basic @Column
        private String currency;
    
        private transient Money money;
    
            public Money getMoney() {
                if (money == null) {
                    money = Money.of(CurrencyUnit.of(currency), amount);
                }
    
                return money;
            }
    }
    
Другие вопросы по тегам