Ich verwende Spring-Boot/Feder-Daten-Jpa für mein Projekt. Die folgenden Entitäten erstellen Tabellen in Oracle, wenn spring.jpa.hibernate.ddl-auto auf "update" gesetzt ist.Unerwünschte eindeutige Einschränkung bei der Verwendung von @ManyToMany JPA Annotation
@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;
}
}
Was ich erwarte ist ziemlich einfach, dass SZENARIO/Regeltabelle sowie eine Zuordnungstabelle namens RULE_SET erstellt wird. Alles funktioniert gut, außer dass eine unerwünschte eindeutige Einschränkung für RULE_SET_ID in der Tabelle SCENARIO erstellt wird, aber offensichtlich sollte dieselbe RULE_SET_ID für mehrere Szenarien verwendet werden können. Könnte jemand freundlich helfen? Sehr geschätzt !!
BTW, ich bin mit Feder-Boot-1.4.0 mit Hibernate 5.0.9
Danke für Ihre schnelle Antwort! Die Logik ist jedoch, ich habe mehrere Regeln gruppiert mit rule_set_id und die gleiche rule_set_id kann in verschiedenen Szenarien verwendet werden. Wenn dies gesagt wird, sollte rule_set_id im Szenario in der Szenariotabelle nicht eindeutig sein. Oder verwende ich @ManyToMany nicht richtig? –
@RogerZhong Ich aktualisiere. –
Das ist wahrscheinlich die einzige Problemumgehung für die Zeit. Danke vielmals! –