我正在使用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;
}
我想确保如果引用的Container不存在,插入Item会失败。我不希望在项目对象(ManyToOne)中填充Container对象,如果可以的话,我该怎么做呢?
答案 0 :(得分:2)
您可以使用columnDefinition
属性声明任意约束:
@Column(name="container_guid",
columnDefinition = "VARCHAR(255) REFERENCES container(guid)")
private String containerGuid;
但请注意,Hibernate对此约束一无所知,因此,例如,它可能无法按照正确的顺序执行插入,依此类推。
因此,建立@ManyToOne
关系会更好。如果您害怕设置此属性需要Container
的额外SQL查询,则可以使用Session.load()
/ EntityManager.getReference()
获取代理而不发出actulal查询。
答案 1 :(得分:-3)
Try using below relationship mapping
RelationShip Mapping
@OneToOne(cascade = CascadeType.ALL,fetch = FetchType.LAZY)
@ManyToOne()
@ManyToMany()
<> @JoinColumn(name =“<>”)