我在我的项目中使用spring boot/spring data jpa。spring发布后,下面的实体将在oracle中创建表。jpa。冬眠ddl auto设置为更新。
@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的映射表。一切都很顺利,只是在表场景中创建了一个不需要的对RULE_SET_ID的唯一约束,但显然相同的RULE_SET_ID应该能够被多个场景共享。谁能帮忙吗?非常感谢!!
顺便说一句,我正在使用带有Hibernate5.0.9的Spring-boot 1.4.0
显然,如果您使用了referencedColumnName=“RULE_SET_ID”
,RULE_SET_ID
,则应该是唯一的。
您可以为Scenario
使用代理键
@Entity
@Table(name = "SCENARIO")
public class Scenario {
@Id
@GeneratedValue
private Integer id;
}
并使用@manytomy
映射
@ManyToMany
@JoinTable(name = "RULE_SET", joinColumns = @JoinColumn(name = "WORKSET_ID"),
inverseJoinColumns = @JoinColumn(name = "RULE_ID"))
public Set<Rule> getRules() {
return rules;
}
使现代化
我想使用规则集
实体来表示一组规则(使用联接表进行映射):
@Entity
class RuleSet {
@OneToMany
private List<Rule> rules = new ArrayList<Rule>();
}
问题内容: 我正在使用这些注释将数据输入数据库表。我想使userId字段唯一。但是当我这样做时,它向我显示错误 问题答案: 或者,如果它是数据库生成的ID,您也可以执行此操作
我试图创建自定义注释来检查唯一的字段值。例如,检查唯一的电子邮件地址等。 但无法自动关联“customerDAO”对象。它抛出异常组织。springframework。网状物util。NestedServletException:请求处理失败;嵌套的异常是javax。验证。ValidationException:isValid调用期间发生意外异常。 我在哪里犯错?请建议。 顾客JAVA 唯一的JA
我试图弄清楚使用运行时级别保留注释(例如:@javax.inject.named)注释的类在编译时和运行时类路径方面的确切影响。这是我到目前为止的理解: null 如果是这种情况,我是否需要创建一个包装对象(用@javax.inject.named注释)来委托内部的、未注释的对象?是否还有一个在编译时禁用注释处理的选项?参见http://docs.oracle.com/javase/7/docs/
我有以下代码,这是我的API的艺术 如果我有@ApiParam注释,@PathVariable就变成非必需的,所以如果我没有输入userId并通过Swagger UI发出请求,请求仍然会转到服务器,这会导致不必要的服务器错误。默认情况下,@Path变量的参数“必需”为true(因此,默认值为@PathVariable(name=“userId”,必需=true)),并且在该参数上没有@ApiPar
这是我的限制: 该查询证明约束实际上不起作用: 下面是输出: 为什么唯一性没有被强制执行?
它的方法是应用唯一的两列约束模型使用peewee。有原始的方法(使用),但我正在寻找另一种方法。 我使用postgres,所以我试图像@booshong下面说的那样做,然后在原始SQL我给出了以下内容(为了简单起见,与事务相关的和省略并输出): 正如我们所看到的,正如我前面所说,这是不同的事情。