私のDBスキーマには2つのテーブルがあります:-Rule Table
とRule Scope
テーブル。
ルール テーブルの列 (rule_id
主キー、.....) およびルール スコープの列 (rule_id
外部キー、Scope_id
(自動生成された ID ではなく、異なる rule_id に対して繰り返すことができます) )
ルール スコープの主キーは、rule_id
との組み合わせですScope_id
。
私のRULE
エンティティ
@Entity
@Table(name = "RULE")
public class Rule implements IEntity {
@Column(name = "RULE_ID")
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int ruleId;
@OneToMany(fetch=FetchType.LAZY,mappedBy="rule")
private Set<RuleScope> ruleScope=new HashSet<RuleScope>();
Rule Scope
実在物:-
@Entity
@Table(name = "RULE_SCOPE")
public class RuleScope {
@Embeddable
public static class Id implements Serializable{
@Column(name = "RULE_ID")
private int ruleId;
@Column(name = "SCOPE_ID")
private int scopeId;
}
@EmbeddedId
private Id id = new Id();
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "RULE_ID", insertable = false, updatable = false)
private Rule rule;
次の質問があります:-
Rule を保存しようとしているのに、子エンティティが永続化されていない場合。外部キー制約に違反しているルール スコープを永続化すると、ルール ID に 0 が与えられます。しかし、 @JoinColumn を使用すると機能します。を永続化して使用しRule Scope
ながら永続化するのを手伝ってください。Rule
mappedBy