2011-11-18 31 views
6

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

+0

không SequenceGenerator bạn làm gì? – ryanbraganza

Trả lời

0

tôi tìm thấy câu trả lời.

Đối với máy phát điện id chung cho tất cả các lớp học, chúng ta nên sử dụng

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

Hope trợ giúp này ai đó có cùng một vấn đề như tôi.

0

Thậm chí tôi đã nhận cùng một vấn đề, sử dụng các dòng sau

@GenericGenerator(name = "increment", strategy = "increment") 
@GeneratedValue(generator = "increment") 
Các vấn đề liên quan