2017-04-21 136 views
1

我有一個包含複合標識的表,其中一個字段是另一個表的外鍵。在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

相關問題