Hibernate:使用外键插入数据

时间:2016-03-16 12:34:12

标签: java hibernate

我的数据库中有以下两个表:

日历(id,name,user_id)

用户(id,name,...)

每个日历由一个用户拥有,每个用户可以拥有多个日历。因此,从日历到用户之间存在多对一关系。现在我想在我的Calendar表中插入一组数据,我的Calendar Entity如下所示:

@Entity
@Table(name = "calendar")
public class Calendar {

    @Id 
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid2")
    @Column(name = "id", columnDefinition = "BINARY(16)")
    private UUID id;

    @Column(name = "name")
    private String name;

    @ManyToOne
    @JoinColumn(name = "owner", referencedColumnName = "id")
    private User owner;
    ...
}

但是,当我插入数据集时,我确实知道所有者的id,但我没有相应的User对象。我是否必须检索User对象,将owner设置为它然后插入数据集?

这对我来说听起来有点不方便,有没有办法使用User id插入数据集,因为它将存储在数据库中,而不是使用User对象? / p>

2 个答案:

答案 0 :(得分:1)

您可以获取具有给定所有者ID的用户代理实例(这是便宜的操作)。然后将此实例用作所有者值:

User dummy = hibernateTemplate.load(User.class, ID); //entityManager.getReference or session.load should do the trick too
calendar.setOwner(dummy);
hibernateTemplate.save(calendar)

答案 1 :(得分:1)

只需将新的User添加到Calendar

Calendar c = new Calendar();
c.setOwner(new User(id));