一尘不染

UserType / Hibernate / JodaMoney错误:PersistentMoneyAmount要求将currencyCode定义为参数

hibernate

我正在使用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>

相关的spring配置:

<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>

关于我所缺少的任何提示吗?


阅读 334

收藏
2020-06-20

共1个答案

一尘不染

我最终使用以下配置解决了这个问题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检测到。

2020-06-20