我使用以下命令
创建了一个名为hibernate_sequnce的序列create sequence hibernate_sequence start with 400;
这是我的hibernate annotated dao
@Entity
@Table(name="T_BIZ_TERM")
public class BizTerm implements Serializable {
/**
*
*/
private static final long serialVersionUID = -3056055722354292136L;
private Long bizTermId;
@Id
@GeneratedValue()
@Column(name="BIZ_TERM_ID")
public Long getBizTermId() {
return bizTermId;
}
public void setBizTermId(Long bizTermId) {
this.bizTermId = bizTermId;
}
}
为了在表中插入新记录,hibernate生成错误查询以获取下一个序列值。 Hibernate总是发出这个查询..无论我做什么..
select nextval(hibernate_sequnce)
我正在使用oracle 10G,它总是报告以下错误..
ORA-00923: FROM keyword not found where expected
发出的查询应为select hibernate_sequnce.nextval from dual;
现在该怎么办,我错过了什么吗?
答案 0 :(得分:1)
我为Oracle序列做了类似的事情。
@Id
@Column(name = "BIZ_TERM_ID")
@SequenceGenerator(name = "myKeySeq", sequenceName = "hibernate_sequence ", allocationSize = 20)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "myKeySeq")
private Long bizTermId;;
虽然我比hibernate_sequence更好地命名序列。尝试类似biz_term_sequence的东西。您将需要每个表主键不同的序列。
答案 1 :(得分:0)
您是否配置了Oracle方言?
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />