Java Hibernate和JPA:如何对字符串进行外键约束
我正在使用Hibernate和JPA。如果我有两个简单的实体:Java Hibernate和JPA:如何对字符串进行外键约束,java,hibernate,jpa,Java,Hibernate,Jpa,我正在使用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;
@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;
}
我想确保在引用的容器不存在的情况下插入一个项失败。我不希望在item对象manytone中填充容器对象,如果可能的话,我该怎么做
Try using below relationship mapping
关系映射
@OneToOnecascade=CascadeType.ALL,fetch=FetchType.LAZY
@许多酮
@许多
@JoinColumnname=您可以使用columnDefinition属性声明任意约束:
@Column(name="container_guid",
columnDefinition = "VARCHAR(255) REFERENCES container(guid)")
private String containerGuid;
但是,请注意,Hibernate不知道有关此约束的任何信息,因此,例如,它可能无法按照与其相关的正确顺序执行插入,等等
因此,最好创建一个@manytone关系。如果您担心设置此属性需要对容器进行额外的SQL查询,则可以使用Session.load/EntityManager.getReference来获取代理,而无需发出actulal查询。是否有机制确保在删除容器时也删除Item类?