我正在开发一个使用Hibernate/Spring框架的应用程序来管理一些电影。
Movie类与Genre类之间有一个多对多关系。这两个类都使用GeneratedValue注解生成id。
通过使用@Cascade(CascadeType.SAVE_UPDATE),可以通过movie对象保存genre对象。我已经在genre的type属性上放置了唯一约束(它是名称,例如“Fantasy”)。
现在我想让Hibernate检查是否已经存在一个type为“Fantasy”的genre,如果已经存在,则使用该genre的id而不是尝试插入新记录。(后者显然会引发错误)
最后,我需要的是类似于select-before-save的函数,而不仅仅是select-before-update。
在Hibernate中是否有这样的功能?
一些代码:
Movie类
Movie类与Genre类之间有一个多对多关系。这两个类都使用GeneratedValue注解生成id。
通过使用@Cascade(CascadeType.SAVE_UPDATE),可以通过movie对象保存genre对象。我已经在genre的type属性上放置了唯一约束(它是名称,例如“Fantasy”)。
现在我想让Hibernate检查是否已经存在一个type为“Fantasy”的genre,如果已经存在,则使用该genre的id而不是尝试插入新记录。(后者显然会引发错误)
最后,我需要的是类似于select-before-save的函数,而不仅仅是select-before-update。
在Hibernate中是否有这样的功能?
一些代码:
Movie类
@Entity
public class Movie {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String name;
@Lob
private String description;
@Temporal(TemporalType.TIME)
private Date releaseDate;
@ManyToMany
@Cascade(CascadeType.SAVE_UPDATE)
private Set<Genre> genres = new HashSet<Genre>();
.... //other methods
类型类
@Entity
public class Genre {
@Column(unique=true)
private String type;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id
....//other methods