我正在使用休眠和 oracle DB 尝试使用序列将自动 ID 插入表中。该序列明显存在于数据库中,但休眠似乎无法找到它。
以下是所有相关信息:
SLF4J:无法加载类“org.slf4j.impl.StaticLoggerBinder”。 SLF4J:默认为无操作(NOP)记录器实现 SLF4J:有关详细信息,请参阅 http://www.slf4j.org/codes.html#StaticLoggerBinder。 org.hibernate.exception.SQLGrammarException:无法获得下一个序列值 在 org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:92) 在 org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) …… 引起:java.sql.SQLSyntaxErrorException:ORA-02289:序列不存在 …… ... 12 更多
我知道它说“引起:java.sql.SQLSyntaxErrorException:ORA-02289:序列不存在”但我可以访问数据库上的序列:
桌子:
CREATE TABLE Property(
id INT,
address VARCHAR2(50),
town VARCHAR2(50),
postCode VARCHAR2(50),
purchasePrice INT
);
序列:
create sequence property_seq start with 1 increment by 1 nomaxvalue;
映射xml:
<class name="com.rental.model.property.Property" table="PROPERTY">
<meta attribute="class-description"> This class contains the property detail. </meta>
<id name="id" type="integer" column="id">
<generator class="sequence"/>
</id>
<property name="address" column="ADDRESS" type="string" />
<property name="town" column="TOWN" type="string" />
<property name="postCode" column="POSTCODE" type="string" />
<property name="purchasePrice" column="PURCHASEPRICE" type="integer" />
</class>
注解:
@Id
@SequenceGenerator(name="property_seq", sequenceName="property_seq", allocationSize=1, initialValue=1)
@GeneratedValue (strategy = GenerationType.SEQUENCE, generator="property_seq")
public int getId() {
return id;
}