2012-04-27 90 views
2

sequnce我创建了一个使用以下命令如何产生的休眠

create sequence hibernate_sequence start with 400; 

称为hibernate_sequnce sequnce这是我的休眠注释道

@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; 
    } 
} 

为了插入新记录到表中休眠正在产生错误的查询来获取下一个sequnce值.. 休眠总是发出此query..no无论我做什么..

select nextval(hibernate_sequnce) 

我使用Oracle 10g该报告总是有以下错误..

ORA-00923: FROM keyword not found where expected 

发行应该是select hibernate_sequnce.nextval from dual; 现在给做的查询,我失去了什么?

回答

0

我对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。您将需要每个表主键不同的序列。

+0

也如Mulmoth建议的那样,确保您的方言已设定! – 2012-04-27 08:11:27

0

您是否配置了Oracle方言?

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />