【发布时间】:2016-08-16 10:29:52
【问题描述】:
我需要在 Hibernate 中插入两个表 - 我有一个用户,每个用户所属的都是成员。因此,在创建新用户时,我需要在成员表中添加一个新条目。我通过创建一个映射到我的成员表的成员对象然后将其作为映射到用户表的用户对象中的字段来尝试此操作
@Entity
@Table(name = "USER")
public class User
{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "fullName")
private String fullName;
//other fields ommited
@OneToOne
@JoinColumn(name = "id")
private Member member;
我的会员pojo如下所示
@Entity
@Table(name = "MEMBER")
public class Member
{
@Id
@GeneratedValue
@Column(name = "id")
private int id;
@Column(name = "sgpid")
private int sgpid;
@Column(name = "username")
private String username;
尝试保存对象我做如下;
@Override
public boolean addUser(User user)
{
if (user == null)
{
throw new IllegalArgumentException("Unable to add null user");
}
Session session = HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
return true;
}
这给了我保存在我的用户表中的行,但条目没有插入到成员表中。我认为我的链接注释可能不正确,但我不太确定 - 请有人提供帮助。
谢谢
【问题讨论】:
-
@JoinColumn(name = "id")表示用户和成员共享相同的 id。你确定你的专栏不应该像 "member_id" 吗?这样,每个用户都有一个指向其成员的 member_id。 -
用户和会员通过两个 id 链接,但实际上我现在可能会将其更改为在用户名上链接