Tôi đã là một vấn đề liên quan đến chuỗi không tìm thấy khi tôi nâng cấp Hibernate từ 3,5 đến 4.0.0.RC6:ORA-02.289: chuỗi không tồn tại khi nâng cấp Hibernate 3 để ngủ đông 4
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)
Bất cứ ai cũng biết làm thế nào để sửa chữa nó? làm ơn cho tôi biết. Tôi đang sử dụng Oracle10gDialect và ghi đè lên hàm getNativeIdentifierGeneratorClass() bằng cách sử dụng trình tự SequenceGenerator của riêng tôi. Nó đã làm việc trên Hibernate 3.5 nhưng ném ngoại lệ khi tôi nâng cấp lên Hibernate 4.0.0.RC6
Dưới đây là lớp TableNameSequenceGenerator tôi:
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);
}
}
Khi tôi làm gỡ lỗi bằng cách sử dụng chế độ ngủ đông 4, tableName chỉ trả lại REVINFO (nó hoạt động ở chế độ ngủ đông 3)
Cảm ơn Hiệp
không SequenceGenerator bạn làm gì? – ryanbraganza