2017-11-26 12 views
0

私は、クラスAとクラスBを持つデータモデルを持っていますが、どちらも複数の主キーを持っています。私はAからのすべての要素をResultSetMappingに入れてクエリに使用しようとしますが、Aにはエンティティ(B)のキーがあるので例外が発生すると思います。SqlResultSetMapping with doube埋め込みキー

java.lang.ArrayIndexOutOfBoundsException:ヌル java.lang.System.arraycopy(ネイティブメソッド)でBが別のエンティティであることの私は、クエリでエラーが発生しますので、

class A { 
    @Id 
    String id; 

    @Id 
    String version; 

    @Id 
    B b; 
} 

class B{ 
    @Id 
    String id; 

    @Id 
    String type; 
} 

@SqlResultSetMapping(name = "Mapping", entities = { 
     @EntityResult(entityClass = A.class, fields = { 
       @FieldResult(name = "id", column = "a_id"), 
       @FieldResult(name = "version", column = "a_version"), 
       @FieldResult(name = "b.id", column = "a_b_id"), 
       @FieldResult(name = "b.type", column = "a_b_type") 
       } 

は、私は思います〜[na:1.8.0_131] at org.hibernate.internal.util.collections.ArrayHelper.slice(ArrayHelper.java:131) 〜[hibernate-core-5.0.12.Final.jar:5.0.12.Final] ]

答えて

0

最初は@IdクラスはAとBで定義されています。たとえば、EntityManager.find()などで使用されます。

第二に、あなたは

@Id 
@ManyToOne 
B b; 
を作業することを取得するには@ManyToOneアノテーションを追加する必要があります