Ошибка UserType / Hibernate / JodaMoney: PersistentMoneyAmount требует, чтобы в качестве параметра был указан currencyCode
Я использую UserType 3.0.0.RC1 для сопоставления JodaMoney с Hibernate.
Я застрял с ошибкой при инициализации SessionFactory:
PersistentMoneyAmount требует, чтобы currencyCode был определен как параметр, или свойство defaultCurrencyCode Hibernate должно быть определено
Я уверен, что у меня должна быть проблема с конфигурацией - вот соответствующие фрагменты.
persistence.xml:
<persistence-unit name="spring-jpa">
<properties>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="jadira.usertype.autoRegisterUserTypes" value="true"/>
</properties>
</persistence-unit>
Соответствующий весенний конфиг:
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="packagesToScan">
<list>
<value>com.mangofactory.concorde</value>
<value>com.mangofactory.moolah</value>
</list>
</property>
<property name="persistenceUnitName" value="spring-jpa" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQLDialect" />
</bean>
</property>
</bean>
Любые советы о том, что мне не хватает?
3 ответа
Я решил эту проблему, используя следующую конфигурацию в моем persistence.xml
:
<persistence-unit name="spring-jpa">
<properties>
<property name="hibernate.format_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="jadira.usertype.autoRegisterUserTypes" value="true"/>
<property name="jadira.usertype.currencyCode" value="AUD"/>
<property name="jadira.usertype.seed" value="org.jadira.usertype.spi.shared.JvmTimestampSeed"/>
</properties>
</persistence-unit>
Сложность в том, что мне нужно было предоставить jadira.usertype.seed
для того, чтобы jadira.usertype.currencyCode
быть обнаруженным.
Если вы ищете решение на основе аннотаций, вы можете попробовать это
@Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmount", parameters = { @Parameter(name="currencyCode", value="USD") })
private Money price;
нашел здесь
Архив электронной почты: usertype-обсудить (только для чтения)
Что касается необходимости настройки seed - это связано с ошибкой в 3.0.0-RC1 и будет исправлено в будущем.