Java持久性2.1。第2.5章說:
一個可嵌入的類可能包含與物體或物體集合的關系。由于可嵌入類的實體本身沒有持久性身份,所以從被參考的物體的關系是與包含可嵌入實體的物體的關系,而不是與可嵌入類本身的關系。被用作嵌入式 ID 或地圖鍵的可嵌入類必須不包含這種關系。
我創建了這種關系,而且一切正常。請告訴我,為什么不可能做到這一點?
我的 Embeddable 類 AuthorizationHistorySssPropertyPK:
@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
public class AuthorizationHistorySssPropertyPK implements Serializable {
@ManyToOne {
@JoinColumn(name = "applicationSss", referencedColumnName = "ss", nullable = false)
private Sss sss;
@Column(name = "dataTime", nullable = false)
private Timestamp dataTime;
}
我的類AuthorizationHistory與@EmbeddedId:
@Entity
@Table(name = "`AuthorizationHistory`")
@Data
@NoArgsConstructor
public class AuthorizationHistory {
@EmbeddedId
private AuthorizationHistorySssPropertyPK authorizationHistorySssPropertyPK;
@Column(name = "login", nullable = false)
private String login;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "status", nullable = false)
private byte status。
public AuthorizationHistory(Sss sss, String login, String password, Timestamp timestamp, byte status){
this.authorizationHistorySssPropertyPK = new AuthorizationHistorySssPropertyPK(ss,timestamp)。
this.login = login;
this.password = password;
this.status = status;
}
而類Sss:
@Entity
@Table(name = "`SSS`")
@Data
@NoArgsConstructor
public class Sss {
@Id
@Column(name = "sss", nullable = false)
private int sss;
//.....
該資料庫是很久以前創建的,我無法改變它。
但是表AuthorizationHistory沒有欄位ID。
我需要用Hibernate創建這個表,用一個復合鍵或者......不知道。
但我必須要做得正確。
請幫助我。怎么做才正確?
uj5u.com熱心網友回復:
:Hibernate支持在主鍵類中直接建模
@ManyToOne關聯,無論是@EmbeddedId還是@IdClass。然而,JPA規范并不支持這種做法。在JPA術語中,我們將使用 "派生識別符號"。有關詳細資訊,請參見派生識別符號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/309839.html
標籤:
下一篇:自動映射器的嵌套映射和分組
