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我更新。 –
这可能是目前唯一的解决方法。非常感谢! –