私のプロジェクトにはspring-boot/spring-data-jpaが使用されています。下のエンティティは、spring.jpa.hibernate.ddl-autoが更新するように設定されているときにoracleにテーブルを作成します。私は期待してい何@ManyToMany JPAアノテーションを使用した場合の不要なユニーク制約
@Entity
@Table(name = "SCENARIO")
public class Scenario {
private Integer worksetId;
private Integer ruleSetId;
private Set<Rule> rules;
@Id
public Integer getWorksetId() {
return worksetId;
}
public void setWorksetId(Integer worksetId) {
this.worksetId = worksetId;
}
@Column(name = "RULE_SET_ID")
public Integer getRuleSetId() {
return ruleSetId;
}
public void setRuleSetId(Integer ruleSetId) {
this.ruleSetId = ruleSetId;
}
@ManyToMany
@JoinTable(name = "RULE_SET", joinColumns = @JoinColumn(name = "WORKSET_ID", referencedColumnName = "RULE_SET_ID"), inverseJoinColumns = @JoinColumn(name = "RULE_ID", referencedColumnName = "ID"))
public Set<Rule> getRules() {
return rules;
}
public void setRules(Set<Rule> rules) {
this.rules = rules;
}
}
@Entity
@Table(name = "RULE")
public class Rule {
private Integer id;
private String description;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
はSCENARIO/RULEテーブルが作成されることを非常に簡単です、だけでなく、RULE_SETという名前のマッピングテーブル。テーブルSCENARIOのRULE_SET_IDに対する望ましくないユニーク制約が作成されていることを除けば、すべてうまくいくが、明らかに同じRULE_SET_IDを複数のシナリオで共有できるはずである。誰でも親切に助けてくれますか?とても有難い!!あなたがreferencedColumnName = "RULE_SET_ID"
、RULE_SET_ID
をすれば
ところで、私は、5.0.9
ご質問ありがとうございます。しかし、ロジックは、私はいくつかのルールをrule_set_idでグループ化し、同じrule_set_idを異なるシナリオで使用することができます。このように、シナリオのrule_set_idは、シナリオテーブル内で一意であってはなりません。または私は@ManyToManyを不適切に使用していますか? –
@RogerZhong私は更新します。 –
これはおそらく当面の唯一の回避策です。どうもありがとう! –