3

我有一个使用 Hibernate 和两个数据源(db2 和 sql-server)的 Spring 项目。

我一添加

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SOME_SEQ")

到我的实体类中的列字段,我BeanCreationException在创建 sql-server 时得到一个,EntityManagerFactory因为org.hibernate.dialect.SQLServerDialect不支持序列。不过,唯一使用此实体的地方是在EntityManagerFactory使用适当方言的 db2 的 DAO 中。

我错过了什么?

4

2 回答 2

5

尝试使用GenerationType=AUTO而不是GenerationType=SEQUENCE.

@GeneratedValue(strategy = GenerationType.AUTO, generator = "SOME_SEQ")

使用 AUTO hibernate 使用最佳拟合生成策略,对于某些数据库是序列,对于其他数据库是自动增量。

(注意:我从不使用注释,但我使用映射文件。<generator class="native">适用于不同的数据库类型。GenerationType=AUTO注释应该相同。)

于 2012-06-06T08:40:18.520 回答
0

即使我也遇到了同样的问题,并通过在 JPA 持久性单元配置中添加以下选项来解决它

 <exclude-unlisted-classes>true</exclude-unlisted-classes>

此选项强制 JPA 提供程序仅扫描列出的类而不是整个周围的 jar 等。

所以它现在看起来像 -

<persistence-unit name="MSSQLBackedPersistenceUnit" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/jdbc/MSSQLServerDS</jta-data-source>

    <class>com.example.app.domain.MyEntity</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>

    <properties>
        <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServer2008Dialect" />
        <property name="hibernate.show_sql" value="true" />
    </properties>
</persistence-unit>
于 2013-06-18T21:06:18.223 回答