gpt4 book ai didi

java - ORA-02289 : sequence does not exist when upgrade Hibernate 3 to hibernate 4

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:33:39 26 4
gpt4 key购买 nike

当我将 hibernate 从 3.5 升级到 4.0.0.RC6 时,我遇到了与找不到序列相关的问题:

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:703) [hibernate-core-4.0.0.CR6.jar:4.0.0.CR6]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:707) [hibernate-core-4.0.0.CR6.jar:4.0.0.CR6]
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:847) [hibernate-entitymana
ger-4.0.0.CR6.jar:4.0.0.CR6]
... 159 more
Caused by: java.sql.SQLSyntaxErrorException: ORA-02289: sequence does not exist

at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431)

有人知道怎么解决吗?请让我知道。我正在使用 Oracle10gDialect 并使用我自己的 SequenceGenerator 覆盖 getNativeIdentifierGeneratorClass() 函数。它适用于 Hibernate 3.5,但在我升级到 Hibernate 4.0.0.RC6 时抛出异常

下面是我的 TableNameSequenceGenerator 类:

public class TableNameSequenceGenerator extends SequenceGenerator {

public void configure(Type type, Properties params, Dialect dialect) throws MappingException {
if(params.getProperty(SEQUENCE) == null || params.getProperty(SEQUENCE).length() == 0) {
String tableName = params.getProperty(PersistentIdentifierGenerator.TABLE);
if(tableName != null) {
String seqName = tableName + "_SEQ";
params.setProperty(SEQUENCE, seqName);
}
}
super.configure(type, params, dialect);
}
}

当我使用 hibernate 4 进行调试时,tableName 仅返回 REVINFO(它在 hibernate 3 中有效)

谢谢嘻嘻

最佳答案

我找到了答案。

对于所有类的公共(public)id生成器,我们应该使用

@Id
@GeneratedValue(generator="GENERATOR_COMMON")
@GenericGenerator(name="GENERATOR_COMMON",strategy="point.to.table.generator")

希望对和我有同样问题的人有所帮助。

关于java - ORA-02289 : sequence does not exist when upgrade Hibernate 3 to hibernate 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8177779/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com