2017-11-26 2 views
0

Ich habe ein Datenmodell mit Klasse A und Klasse B, beide haben mehr als einen Primärschlüssel. Ich versuche, alle Elemente von A in einem ResultSetMapping in einer Abfrage zu verwenden, aber ich denke, da A einen Schlüssel hat, der Entität (B) ist, erhalte ich eine Ausnahme.SqlResultSetMapping mit double eingebetteten Schlüssel

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") 
       } 

Ich denke, weil der B eine separate Einheit sein ich einen Fehler in der Abfrage erhalten:

java.lang.ArrayIndexOutOfBoundsException: null bei java.lang.System.arraycopy (native Methode) ~ [na: 1.8.0_131] um org.hibernate.internal.util.collections.ArrayHelper.slice (ArrayHelper.java:131) ~ [Hibernate-Core-5.0.12.Final.jar: 5.0.12.Final ]

Antwort

0

Zuerst gibt es keine @Id Klasse definiert auf A und B. Sie werden beispielsweise für EntityManager.find() verwendet.

Zweite Sie @ManyToOne Anmerkung hinzufügen, muss zu bekommen, dass

@Id 
@ManyToOne 
B b; 
Arbeits
Verwandte Themen