ムービーを管理するために、Hibernate/Springアプリケーションで作業しています。データベースにオブジェクトが存在しない場合は保存します(Hibernate&Spring)
クラスムービーは、クラスジャンルと多少の関係を持っています。 これらのクラスはどちらも、GeneratedValueアノテーションを使用してIDを生成しています。
ジャンルは、@カスケード(CascadeType.SAVE_UPDATE)を使用してムービーオブジェクトを介して保存されます ジャンルのタイプ属性(これは「ファンタジー」など)に一意制約を設定しました。
私が今したいのは、すでに "ファンタジー"タイプのジャンルがあるかどうかを確認して、新しいレコードを挿入しようとするのではなく、そのジャンルのIDを使用することです。 (後者は明らかにエラーが発生します)
最後に、select-before-updateのようなものですが、select-before-saveと似ています。
このような関数は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
ジャンル別エンティティにムービーを別々に照会して、「ファンタジー」ジャンルが存在するかどうかを調べることができますか?同様に、ジャンルセットを初期化し、それを繰り返してあなたのジャンルがそこに存在するかどうかを確認することができます – Gleeb
私は、休止状態にはいくつかの機能があることを期待していましたが、それも良い解決策です。 @ jordan002が言ったように、私はこの問題を考え過ぎていました。 – Mike
Insert-if-existsは非常に一般的な操作です...私はHibernateがこれを提供していないことを悲しく思っています。 –