[英]Hibernate One to One, not generating Foreign key
我這里有 4 個表:注冊、用戶、用戶角色和用戶個人資料圖片
Register 和 User 映射到我的一對一關系,並且在 Users 表中生成 Register 的引用......這很好..
現在談論用戶和角色表之間的一對多關系,它也可以通過在角色表中生成用戶表引用來完美地工作。
但問題是在用戶和個人資料圖像之間進行一對一工作時。 個人資料圖像未生成用戶參考 ....為什么未在個人資料圖像表中生成用戶參考
登記
@Entity
@Getter
@Setter
public class Register {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(cascade = CascadeType.ALL,orphanRemoval = true,mappedBy = "register")
private User user;
}
用戶
@Entity
@Getter
@Setter
public class User {
@Id
@Column(name = "User_Id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name = "user_id")
private UserProfileImage userProfileImage;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinColumn(name = "user_id")
private List<UserRoles> userRoles;
}
用戶資料圖片
@Entity
@Getter
@Setter
public class UserProfileImage {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(name = "name")
private String name;
@Column(name = "type")
private String type;
@Column(name = "picByte", length = 100000)
private byte[] picByte;
public UserProfileImage() {
super();
}
public UserProfileImage(String name, String type, byte[] picByte) {
this.name = name;
this.type = type;
this.picByte = picByte;
}
}
用戶 class 中的配置文件映射不正確,並且在您的配置文件 class 中沒有用戶字段,因此它不會在配置文件 class 中生成用戶引用。
此外,用戶到角色的映射也不正確,您的用戶 class 不會使用您的映射填充角色。
嘗試這個:
public class User {
...
@OneToOne(cascade = CascadeType.ALL,fetch=FetchType.EAGER)
@JoinColumn(name = "PROFILE_IMAGE_ID") // foreign key column in User table
private UserProfileImage userProfileImage;
@OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,mappedBy="user")
private List<UserRoles> userRoles;
}
public class UserProfileImage {
...
@OneToOne(mappedBy="userProfileImage")
private User user;
...
}
public class UserRole {
...
@ManyToOne
@JoinColumn(name="USER_ID") // foreign key column in User Role table
private User user;
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.