java - 如何使用 OpenXava/JPA 验证嵌套引用对象 (@ManyToOne) 是否存在?
问题描述
在我的 OpenXava 应用程序中,我有一个名为 Parcel 的类,它引用了 TaxAccount 类:
@Entity
public Parcel {
@ManyToOne
TaxAccount taxAccout;
}
另外,我有一个名为 Assessment 的类,它引用 Parcel:
@Entity
public class Assessment {
@ManyToOne
Parcel parcel;
}
保存评估时,我想检查/验证引用的包裹是否有与其关联的 TaxAccount。如果引用的 Parcel 具有 TaxAccount,则评估的保存操作应该成功,否则保存操作应该失败。
如何使用 OpenXava 实现这一目标?
解决方案
最简单的方法是将验证包含在实体本身中,通过这种方式:
public class Assessment {
@AssertTrue(message="parcel_must_have_tax_account")
private boolean parcelHasTaxAccount() {
return parcel != null && parcel.getTaxAccount() != null;
}
}
请注意,@AssertTrue 不是 OpenXava 注释,而是 Bean Validation 注释,因此此验证将适用于 OpenXava,但也适用于在 OpenXava 之外使用 JPA 实体时。
有关 OpenXava 中的更多验证替代方法,请查看:
推荐阅读
- php - 如何使用 PHPEXCEL 库导入不带上标的 excel 文件
- sql - 用相关列更新表的最佳方法是什么?
- excel - 从超过 120 万行的文本文档创建电子表格
- python - Python jpype.isJVMStarted 没有属性
- testing - 如何在 Cypress 的 E2E 测试中登录 Auth0?
- python - Keras 打开图像并使用它们创建批处理
- r - 嵌套循环遍历 R 中的不同列表
- java - Hibernate 中枚举和 json 类型的问题
- bing - Bing 实体搜索在美国以外不可用
- python - Docker build pytest:无法建立新连接:[Errno 111] Connection denied