2016-03-24 10 views
1

nicht bestimmen Ich kämpfe mit diesem Problem für eine ziemlich lange Zeit jetzt, ich hoffe wirklich, dass ich hier Hilfe finden kann.JPA/Hibernate Konnte den Typ

Ich verwende eine zusammengesetzte Primärschlüssel-Klasse, AssociationKey, die von der Klasse Association verwendet wird. Die IDs in der Schlüsselklasse sind ebenfalls benutzerdefinierte Klassen. Wenn ich versuche, den Code auszuführen erhalte ich die Fehlermeldung:

"Could not determine type for: IClassB, at table: Association, for columns: [org.hibernate.mapping.Column(ClassB)]" 

Ich habe auch versucht ManyToOne und OneToMany Anmerkungen in Klassenvereinigung und ClassB zu verwenden. Aber dann bekomme ich die Fehlermeldung, dass die tpyes sind falsch:

The attribute matching the ID class attribute ClassB does not have the correct type IClassB 

Ist es nicht möglich, eine benutzerdefinierte Klasse als Id in einem zusammengesetzten Primärschlüssel zu benutzen?

@Entity 
@IdClass(AssociationKey.class) 
public class Association implements IAssociation { 

    @Id 
    private IClassA classA; 
    @Id 
    private IClassB classB; 
    ... 
} 


public class AssociationKey implements IAssociationKey, Serializable { 

    public IClassA classA; 
    public IClassB classB; 

    public boolean equals() {..} 
    public int hashCode() {..} 
} 


@Entity 
public class ClassB implements IClassA { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private List<IAssociation> associations; 
} 

Antwort

1

Ich denke, Ihr Problem liegt in Ihrer Primärschlüsseldefinition. Ihr zusammengesetzter Primärschlüssel besteht aus benutzerdefinierten Java-Klassen. Aber die JPA-Spezifikation besagt Folgendes:

Ein einfacher Primärschlüssel oder ein Feld oder eine Eigenschaft eines zusammengesetzten Primärschlüssels soll eine der folgenden Typen sein: jedes Java primitiven Art; irgendein primitiver Wrappertyp; java.lang.String; java.util.Date; java.sql.Datum; java.math.BigDecimal; java.math.BigInteger.

+0

Danke, ich dachte schon. Ich werde mein Modell dann neu entwerfen. – qrstvw

Verwandte Themen