1) 我有 2 个表,user 和 user_profile 具有 OneToOne
关系,
用户表:
id,user_name,first_name,last_name - with ID has primary key,
用户个人资料:
id,name,user_id - with ID has primary key and user_id has foreign key with user table
2) 以下是两个 JPA Entity 对象
用户:
@Entity
@Table(name = "user")
public class User{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "user_name",unique=true,nullable=false)
private String name;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@OneToOne(cascade = {CascadeType.ALL})
@JoinColumn(name="user_id")
public UserProfile userProfile;
//with set/get methods
}
用户个人资料:
@Entity
@Table(name = "user_profile")
public class UserProfile {
@Id
@Column(name = "id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "user_id")
private Long userId;
@OneToOne(mappedBy="userProfile")
private User user;
// with set/get methods
}
当我尝试插入两个表时,我看到 user_id
列已添加到 USER 表中并带有值,但我在 user_id
列中看不到任何值USER_PROFILE 表的。
我是 MySQL 新手,有人可以告诉我如何解决这个问题吗?
最佳答案
您的映射是向后的。 @JoinColumn 应该针对用户,而不是针对 userProfile。
关于java - Hibernate + MySQL + JPA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17256292/