首页 > 解决方案 > 读取实体时更改 DAO/Repository 中的特定值

问题描述

我正在从旧的遗留数据库中读取数据。不知何故,他们使用 0 索引放置所有不存在的关系,例如: Object Person:

id: 123
name: john
surname: snow
birthCityId: 0 <-- this means that there is no relationship between city and this person.

现在,在 JPA 中,我遇到的问题是它正在加载人员实体,但它找不到索引为 0 的相关城市实体。我想编写代码,当我有 ID 为 0 的城市时,城市实体设置为空。我怎样才能做到这一点?我不想在数据库中创建索引为 0 的新实体。

谢谢

标签: javahibernatespring-bootjpa

解决方案


您可以使用 Hibernate@NotFound注释:

@ManyToOne
@NotFound(action=NotFoundAction.IGNORE)
private City birthCity;

https://docs.jboss.org/hibernate/orm/5.3/javadocs/index.html?org/hibernate/annotations/NotFound.html

我没有看到其他发布的解决方案会在休眠负载上发生异常,即在您能够通过其他方式处理它之前。


推荐阅读