1

我正在使用 UserType 3.0.0.RC1 将 JodaMoney 映射到 Hibernate。

当 SessionFactory 初始化时,我遇到了一个错误:

PersistentMoneyAmount 需要将 currencyCode 定义为参数,或者定义 defaultCurrencyCode Hibernate 属性

我确定我一定有一些配置问题——这是相关的片段。

持久性.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>

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

4

3 回答 3

2

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

于 2012-04-20T01:46:46.373 回答
1

如果您正在寻找基于注释的解决方案,您可以试试这个

@Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmount", parameters = { @Parameter(name="currencyCode", value="USD") })
private Money price;

在这里找到

电子邮件存档:usertype-discuss(只读)

于 2012-06-12T14:49:48.883 回答
0

关于需要配置种子 - 这是由于 3.0.0-RC1 中的一个错误,将来会修复。

于 2012-05-01T06:20:38.970 回答