Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate和JPA:如何对字符串进行外键约束_Java_Hibernate_Jpa - Fatal编程技术网

Java 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;

我正在使用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;
}
我想确保在引用的容器不存在的情况下插入一个项失败。我不希望在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类?