私はいくつかの映画を管理するためにHibernate/Springアプリケーションに取り組んでいます。
クラス映画は、クラスのジャンルと多対多の関係があります。これらのクラスは両方とも、GeneratedValueアノテーションを使用してIDを生成しています。
ジャンルは、@ Cascade(CascadeType.SAVE_UPDATE)を使用して、ムービーオブジェクトを介して保存されます。ジャンルのタイプ属性(名前、たとえば「ファンタジー」)に一意の制約を設定しました。
私が今やりたいのは、「ファンタジー」タイプのジャンルがすでに存在するかどうかをHibernateにチェックさせ、存在する場合は、新しいレコードを挿入する代わりに、そのジャンルのIDを使用することです。(後者は明らかにエラーをスローします)
最後に必要なのは、select-before-updateのようなものですが、select-before-saveのようなものです。
Hibernateにそのような機能はありますか?
いくつかのコード:
映画教室
@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