作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Hibernate 和 JPA。如果我有两个简单的实体:
@Entity
@Table(name = "container")
public class Container {
@Id
@Column(name="guid")
private String guid;
}
@Entity
@Table(name="item")
public class Item {
@Id
@Column(name="guid")
private String guid;
@Column(name="container_guid")
private String containerGuid;
}
并且我想确保如果引用的容器不存在,则插入项目会失败。我不希望在项目对象 (ManyToOne) 中填充 Container 对象,如果可以的话我该怎么做?
最佳答案
您可以使用columnDefinition
属性声明任意约束:
@Column(name="container_guid",
columnDefinition = "VARCHAR(255) REFERENCES container(guid)")
private String containerGuid;
但是请注意,Hibernate 对这个约束一无所知,因此,例如,它可能无法按照正确的顺序执行插入等等。
因此,最好创建 @ManyToOne
关系。如果您担心设置此属性需要对 Container
进行额外的 SQL 查询,可以使用 Session.load()
/EntityManager.getReference()
获取代理而不发出实际查询。
关于java - hibernate 和 JPA : how to make a foreign key constraint on a String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062194/
我是一名优秀的程序员,十分优秀!