2012-03-02 3 views
1

私の目標は、エンティティからテーブルを生成する際に、EJBがシーケンスを生成することです。どうやってやるの?JPAでPostgreSQLを作成する方法は?

私はこれについて考えましたが、その場合は既存のシーケンスのみを使用します。 JPAによって生成されるシーケンスが必要です。これは不可能だと思いますか?

@Entity 
@Table(name = "CUSTOMER") 
@SequenceGenerator(name = "sb_sequence",sequenceName = "sb_sequence", initialValue=5420) 
public class Customer extends EntityBase 
{ 
    private static final long serialVersionUID = 3456353535358L; 

    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sb_sequence") 
    @Column(name = "CUS_SEQUENCE") 
    private long cusSequence; 
. 
. 
. 
} 

背景:私は、データベースへの最初の値を挿入する前に、私は最初のシーケンス番号取得する必要があります。

+0

これは本当にそうです。つまり、オブジェクトがストアに永続化される前にオブジェクトのIDがどのようになるかを知りたい場合は、シーケンスの呼び出しを処理する必要があります。 'GenerationType.SEQUENCE'でオブジェクトを保存する前に' select nextval( 'sequence');を実行すると、実際には2つのシーケンス番号が生成されます。 [この関連する質問](http://stackoverflow.com/questions/3067986/calling-next-value-of-a-sequence-in-jpa)も参照してください。 – ig0774

答えて

0

ほとんどのJPAプロバイダはDDLをすることを可能にする(おそらく選択のnextval(「配列」)とを)生成されますが、これはJPA仕様の一部ではありません。 EclipseLinkのは、参照してください

DDLを生成しないJPAではなく、あなたのJPAの実装に依存するように起こっているのと同様に、

http://wiki.eclipse.org/EclipseLink/Examples/JPA/DDL

関連する問題