0
我爲我的項目使用了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;
}
}
我很期待是非常簡單的那種情況下/規則表將被創建,以及一個名爲RULE_SET映射表。除了在表SCENARIO中創建RULE_SET_ID上的不需要的唯一約束之外,一切都會順利進行,但顯然相同的RULE_SET_ID應該能夠被多個場景共享。任何人都可以提供幫助嗎?非常感激!!
順便說一句,我使用的是彈簧啓動1.4.0與5.0.9休眠
感謝您的及時答覆!但是,邏輯是,我有幾個規則與rule_set_id分組,並且可以在不同情況下使用相同的rule_set_id。據說這樣,場景中的rule_set_id在場景表中不應該是唯一的。或者我正在使用@ManyToMany不正確? –
@RogerZhong我更新。 –
這可能是目前唯一的解決方法。非常感謝! –