Как хранить joda.money в MySQL
У меня есть класс, который имеет атрибут типа данных joda.money. Как я могу сопоставить этот атрибут в MySQL.
мой класс это:
@Table (name = "products") открытый класс Product(){ @Column(name="name") Имя строки; @Column(name="money") Деньги деньги; }
Я использую весенний спящий
Может кто-нибудь сказать, как хранить эту модель в MySQL?
1 ответ
Решение
У вас есть больше вариантов здесь.
- Вы можете сделать два поля, представляющих Йода
Money
,BigDecimal
на сумму иString
за валюту. Затем создайте временное синтетическое полеMoney
и создайте его в геттере (см. пример ниже). - Вы можете реализовать свой собственный
UserType
и обеспечить сериализацию / десериализацию самостоятельно. См. Javadoc UserType и документацию Пользовательские типы с использованием org.hibernate.usertype.UserType. Взгляните на эту реализациюCompositeUserType
, Вы можете включить проект 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; } }