次のように、多対多の関係を持つ2つのエンティティCRImageTypeとCRVariableがあります。
CRImageType エンティティ:
@Entity
@Table(name = "imageviewer_crimagetype")
public class CRImageType implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "ImTypeId")
private Long imTypeId;
@Column(name = "ImTypeName")
private String imTypeName;
@Column(name = "ImTypeDescription")
private String imTypeDescription;
@ManyToMany(cascade = {CascadeType.ALL})
@JoinTable(name="imageviewer_imtype_variable",
joinColumns={@JoinColumn(name="ImTypeId")},
inverseJoinColumns={@JoinColumn(name="VarId")})
private Set<CRVariable> crvariables = new HashSet<CRVariable>();
CRVariable エンティティ:
@Entity
@Table(name = "imageviewer_crvariable")
public class CRVariable implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name = "VarId")
private Long varId;
@Column(name = "VarName")
private String varName;
@Column(name = "VarDescription")
private String varDescription;
@ManyToMany(mappedBy="crvariables")
private Set<CRImageType> crimagetypes = new HashSet<CRImageType>();
私のデータベースでは、関係は「imageviewer_crimagetype」と「imageviewer_crvariable」の2つのテーブルと、多対多の関係の「imageviewer_imtype_variable」の3番目のテーブルによってマッピングされます。
テーブル"imageviewer_imtype_variable"から関連付けレコードを削除したいだけです。「imageviewer_imtype_variable」テーブルに直接アクセスできないため、HQL クエリを使用してどのように実行できますか。
次のようなSQLクエリに相当するHQLが欲しい
delete from imageviewer_imtype_variable where ImTypeId='%%%'