Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 OneTONE双向映射中的唯一约束_Java_Hibernate_Jpa_Hibernate Mapping_One To One - Fatal编程技术网

Java OneTONE双向映射中的唯一约束

Java OneTONE双向映射中的唯一约束,java,hibernate,jpa,hibernate-mapping,one-to-one,Java,Hibernate,Jpa,Hibernate Mapping,One To One,在关系所有者的双向一对一映射中是否需要unique=true @Entity public class Customer { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Long id; private String name; @OneToOne(cascade={CascadeType.PERSIST}) @JoinColumn(name="passport_id",

在关系所有者的双向一对一映射中是否需要
unique=true

@Entity
public class Customer {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    private String name;

    @OneToOne(cascade={CascadeType.PERSIST})
    @JoinColumn(name="passport_id", unique=true) //is unique=true required for bi-directional one-to-one mapping
    private Passport passport;

    public Passport getPassport() {
        return passport;
    }

}

@Entity
public class Passport {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;

    @Column(name="passport_number")
    private String passportNumber;

    @OneToOne(mappedBy="passport")
    private Customer customer;

    public Customer getCustomer() {
        return customer;
    }

}

Hibernate文档指出,数据库中的FK列应被约束为唯一,以模拟一对一的多重性,但它没有在双向映射中添加
unique=true

这是因为使用Hibernate自动DDL功能不是强制性的。您可以使用增量模式更新脚本,而与模式相关的注释将毫无用处。坦率地说,我们在内存集成测试中使用了它们

正如您所指出的,JoinColumn应该声明唯一性约束