2

次のコマンドを使用して、hibernate_sequence というシーケンスを作成しました

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 に答える