Mat*_*ock 6 java persistence jpa
我想做这个列不能为null但是当我在数据库中插入一个寄存器值null时,这允许我插入.我阅读文档,我不知道为什么不起作用.
@Column(name="QWECOD", nullable = false)
private String qwe;
谢谢
更新:我正在使用Toplink和java org.eclipse.persistence.eclipselink:2.4.2.
我认为如果使用entitymanager的实现生成模式,则使用nullable.我不知道在持久化实体的同时是否必须进行验证.
如果您使用@NotNull注释可能会有所帮助,但这不是普通的JPA.它在JSR-303中定义
Stackoverflow上还有一个主题可以解决您的问题: Stackoverflow - Confusion notnull vs columnnullable false
编辑:在JPA 2.1规范中,有这一部分:
11.2.2.1列
Column注释的以下元素用于模式生成:
name
unique
nullable
columnDefinition table
length(仅限字符串值列)precision(仅限精确数字(十进制/数字)列)scale(精确数字(十进制/数字)仅限列)有关适用于这些元素和列创建的规则,请参阅第11.1.9节.AttributeOverride注释可用于覆盖列映射.
由于没有给出其他提示,我假设如下:如果符合JPA的EntityManager创建模式,则通过使用等效的DB相关约束(例如notnull)来对特定列应用可空约束当您持久化实体时,Entitymanager BUT不会检查底层数据库.因此,如果数据库引发错误,EntityManager会将此错误传播给调用者.
如果你自己创建表而不使用DB nullable约束,那么entitymanager试图保持实体并且没有错误 - > persist是好的,但是有一些不应该存在的空值.
| 归档时间: |
|
| 查看次数: |
10703 次 |
| 最近记录: |