2017-04-21 27 views
1

フィールドの1つが別のテーブルへの外部キーである複合IDを持つテーブルがあります。EmbeddedIdで@JoinColumnを使用すると、org.hibernate.MappingExceptionが生成されます

enter image description here

は、私は以下のクラスでこれを実装しようとした -

Tracking.java:

TrackingUseCaseDetails.java

public class UseCaseStatus implements Serializable { 

    private static final long serialVersionUID = -7058248210575975131L; 

    @EmbeddedId 
    private ID id; 
    private String status; 
    private String resourceId; 
} 

ID.java

public class UseCaseStatusId implements Serializable { 

    private static final long serialVersionUID = -7037374226692973832L; 

    @JoinColumn(name = "trackingId", updatable = false, nullable = false) 
    private Tracking tracking; 
    private TrackingUseCase trackingUseCase; 
} 

しかし私は、次のようなエラーになっています:コードを改善/エラーを解決する方法について

org.hibernate.MappingException: Could not determine type for: Tracking, at table: TrackingUseCaseDetails, for columns: [org.hibernate.mapping.Column(tracking)] 

任意の提案を?

+0

あなたはJPAコンポジットIDについてのドキュメントを読んでいましたか? – Zorglube

答えて

1

これを試してみてください:

@Entity 
public class UseCaseStatus implements Serializable { 

    @EmbeddedId 
    private UseCaseStatusId id; 

    @MapsId("tracking") 
    @ManyToOne 
    @JoinColumn(name = "trackingId", updatable = false, nullable = false) 
    private Tracking tracking; 

    private String resourceId; 
} 


@Embeddable 
public class UseCaseStatusId implements Serializable { 

    //@JoinColumn(name = "trackingId", updatable = false, nullable = false) <- prob not required 
    private long tracking; 

    @Column(name = "status") 
    private String status; 

    //implement equals() and hashcode() : https://en.wikibooks.org/wiki/Java_Persistence/Identity_and_Sequencing#Embedded_Id 
} 
+0

ありがとうございます。ドキュメント自体の中で何を検索するのか分からなかった。それはうまくいった! – ytibrewala

関連する問題