java – 子类getter上的@NotNull影响父类表
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 子类getter上的@NotNull影响父类表,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1516字,纯文字阅读大概需要3分钟。
内容图文
我有一个与javax.validation.constraints.NotNull注释相关的问题.
在我的项目中,我确实有类如下的类树:
@Inheritance(strategy = InheritanceType.JOINED)
class Ssss {
@ManyToOne
private Xxxx x;
public Xxxx getXxxx() {
return x;
}
}
@Inheritance(strategy = InheritanceType.JOINED)
class Yyyy extends Ssss {
@Override
//some not important annotations
public Xxxx getXxxx() {
return super.getXxxx();
}
}
@Inheritance(strategy = InheritanceType.JOINED)
class Zzzz extends Ssss {
@Override
//some not important annotations
@NotNull
public Xxxx getXxxx() {
return super.getXxxx();
}
}
这三个类作为三个表存储在数据库中.
对于模式创建我正在使用Hibernate:
hibernate.hbm2ddl.auto=create
Hibernate在为超类sss生成的表中存储的xxxx_object_id字段中添加NOT NULL是否是预期的行为,如下所示:??
我找不到有关hibernate如何在继承的getter上处理@NotNull的任何相关信息.
任何人都可以帮我解决这个问题吗?
最好的祝福.
米哈尔
解决方法:
是. Hibernate有一些约束,它会在发生冲突时继续检查.
这是一个例子:
@Inheritance(strategy = InheritanceType.JOINED)
class Ssss {
@ManyToOne
private Xxxx x;
public Xxxx getXxxx() {
return x;
}
}
如果它是这么多,那么hibernate没有冲突,因为它使xxxx类型的x为null
但是这里有一个问题,在这段代码中:
@Inheritance(strategy = InheritanceType.JOINED)
class Zzzz extends Ssss {
@Override
//some not important annotations
@NotNull
public Xxxx getXxxx() {
return super.getXxxx();
}
}
这里Hibernate通过@NotNull注释被告知将Xxxx的x类型设为@NotNull
在上面两种情况下,存在冲突,对于Sss,它可以是Null,而Zzzz则不能为空.为了推断并解决冲突,Hibernate也将Ssss的Xxxx类型变量设置为NotNull.
内容总结
以上是互联网集市为您收集整理的java – 子类getter上的@NotNull影响父类表全部内容,希望文章能够帮你解决java – 子类getter上的@NotNull影响父类表所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。