gpt4 book ai didi

java - @OneToOne(optional=false) 和@JoinColumn(nullable=false) 一起使用

转载 作者:太空狗 更新时间:2023-10-29 22:43:44 25 4
gpt4 key购买 nike

我在 JPA 2.0 FR 规范 11.1.37 中遇到过这个例子。 OneToOne 注释,第 403 页:

@OneToOne(optional=false)
@JoinColumn(name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
public CustomerRecord getCustomerRecord() { return customerRecord; }

有什么理由我应该放 @OneToOne(optional=false) 并同时放 @JoinColumn(... nullable=false)

这两个声明不是一样的吗?其中一个不是多余的吗?
它们都用于 DDL 模式生成吗?

最佳答案

形式上,optional=false 是对 JPA 实现的运行时指令,而 nullable=false 是对 DDL 生成器的指令。所以它们不是严格意义上的冗余。

当涉及实体继承时,差异会变得很明显。如果特定映射仅存在于子类中,并且每个层次结构策略只有一个表表,则 OneToOne 映射在包含映射的特定子类上可能是 optional=false。但是,实际的连接列不能设置为非空,否则共享该表的其他子类将无法插入!

在实践中,不同提供者的不同版本可能会或可能不会解释其中任何一个,买者自负。

关于java - @OneToOne(optional=false) 和@JoinColumn(nullable=false) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8275143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com