2016-09-09 23 views
1

私のようなserveralの名前付きクエリを定義します:非反復@NamedQuery

Duplicate annotation of non-repeatable type @NamedQuery. Only annotation types marked @Repeatable can be used multiple times at one target.

とコンパイル時:

@Entity 
@Table(name = "TableA") 
@NamedQuery(query = "SELECT i FROM TableA i WHERE i.Id = :Id", name = "findAById") 
@NamedQuery(query = "SELECT i FROM TableA i WHERE i.name = :name", name = "findAByName") 
public class TableA 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.TABLE) 
    private Long id; 

    @Column(name="Name") 
    String name = ""; 

\\... more code 


} 

しかし、そうすることが、私は日食で、次のエラーメッセージが表示されます。

java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.persistence.NamedQuery: @javax.persistence.NamedQuery(lockMode=NONE, hints=[], query=SELECT i FROM TableA i WHERE i.name = :name, name=findAByName) at sun.reflect.annotation.AnnotationParser.parseAnnotations2(Unknown Source)

私にとっては、1つのクラスにつき1つの名前付きクエリのみのこの制限はあまり意味がありません。これはバグか機能ですか?クラスあたりより多くの名前付きクエリを定義するための回避策がありますか?

答えて

2

ねえ、あなたが以下のように定義する必要があります。

@NamedQueries({ 
    @NamedQuery(query = "SELECT i FROM TableA i WHERE i.Id = :Id", name = "findAById"), 
    @NamedQuery(query = "SELECT i FROM TableA i WHERE i.name = :name", name = "findAByName") 
}) 
+0

感謝を。うまくいきます! – BerndGit