2

我使用以下命令创建了一个名为 hibernate_sequnce 的序列

create sequence hibernate_sequence start with 400;

这是我的休眠注释 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;
    }
}

为了向表中插入新记录,休眠生成错误的查询以获取下一个序列值..休眠总是发出这个查询..不管我做什么..

select nextval(hibernate_sequnce)

我正在使用 oracle 10G,它总是报告以下错误..

ORA-00923: FROM keyword not found where expected

发出的查询应该是select hibernate_sequnce.nextval from dual; 现在要做什么,我错过了什么吗?

4

2 回答 2

1

您是否配置了 Oracle 方言?

<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect" />
于 2012-04-27T08:04:24.533 回答
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 的东西。您将需要每个表主键的不同序列。

于 2012-04-27T08:10:50.087 回答