我试图通过这个简单的例子学习Hibernate,但是我对数据库中仍然为“ null”的外键有麻烦。
@Entity
@Table(name = "tb1")
public class Track {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id_tb1", unique= true)
private int id_tb1;
@Column(name = "title")
private String title;
@ManyToOne
@JoinColumn(name="id_tb2")
private tb2 cd;
这是第二堂课
@Entity
@Table(name = "tb2")
public class CD {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
@Column(name="id_tb2", unique = true)
private int id_tb2;
@Column(name="title")
private String title;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL,mappedBy = "cd")
private List<tb1> tracks = new ArrayList<tb1>();
我这样保存:
SessionFactory factory = new Configuration().configure("/resources/hibernate.cfg.xml").buildSessionFactory();
Session session1 = factory.openSession();
session1.beginTransaction();
session1.save(tb2);
session1.getTransaction().commit();
但是,如果未设置Isavethe id_tb2(在表tb1中),则它保持为空。我想念的是什么?
您必须在双向关系上都设置关系。
因此,您必须为CD
和您的Track
对象设置关系,并在以后持久/合并它们。
在没有看到很多代码的情况下,您必须执行类似的操作。
cd.getTracks().add(track);
track.setCD(cd);
session1.save(track);
session1.save(cd);
有关更多详细信息,请参见另一个问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句