2017-06-25 15 views
1

私は、シーケンスIDを指定するには、この注釈を持っています。休止配列番号は、仕様

カスタム注釈などを作成する方法はありますか?私はシーケンス名だけを指定したいと思います。

+0

JPAプロバイダの中には、あなたが提案したように「メタ注釈」を許可するものがあります。http://www.datanucleus.org/products/accessplatform_5_1/jpa/annotations.html#meta_annotations JPAプロバイダはありますか? –

+0

そのようなものが役に立つかもしれません。メタ注釈にパラメータを追加することは可能ですか?私はシーケンス名を送る必要があるので。あなたのコメントを見て、私は同様の何かを見つけた:https://stackoverflow.com/questions/16810269/how-to-create-meta-annotations-on-field-level –

答えて

0

はい、あなたはハックの方法で、カスタム注釈や他の何かでそれを行うが、私がお勧めすると(私はIDEAを使用しています)ライブテンプレートを使用していることができ enter image description here

enter image description here

1

それは簡単です!

ただ、実体が格納されているpackage-info.javaを作成し、そこにグローバル@GenericGeneratorを提供:

@GenericGenerator(
    name = "pooled", 
    strategy = "org.hibernate.id.enhanced.SequenceStyleGenerator", 
    parameters = { 
     @Parameter(name = "sequence_name", value = "sequence"), 
     @Parameter(name = "initial_value", value = "1"), 
     @Parameter(name = "increment_size", value = "5"), 
    } 
) 
package com.vladmihalcea.book.hpjp.hibernate.identifier.globalsequence; 

次のように次に、あなたのエンティティがpooled一般的な発電機を共有することができます:あなたが使用する必要が

@Entity(name = "Post") 
public class Post { 

    @Id 
    @GeneratedValue(generator = "pooled") 
    private Long id; 
} 

@Entity(name = "Announcement") 
public class Announcement { 

    @Id 
    @GeneratedValue(generator = "pooled") 
    private Long id; 
} 

@GenericGenerator@SequenceGeneratorはパッケージには適用されないためです。

これだけです!

+0

おかげでVlad、申し訳ありませんが多分私は私の指定していない状況が正しくすべてのエンティティは、エンティティーごとに1つずつ異なるシーケンスを持ちます。しかし、それらのすべてのために、私は割り振りのサイズとinital値のような同じプロパティが欲しいです。 @Sequence( "PARAMETROS_SQ")、@Sequence( "CONSULTAS_SQ")というアノテーションのみを検索する方法を探していました。 –

+0

それは動作しません。同じ定義を再利用するか、新しい定義を提供します。基本定義を再利用してエンティティ単位でそれをオーバーライドする方法はありません。 –

+0

私はカスタムアノテーションを作成するようなことを考えていましたか?開発者がシーケンスを指定するのを容易にすることです。このようなことは可能でしょうか? –