读取实体时更改DAO /存储库中的特定值

时间:2019-07-11 16:22:26

标签: java hibernate spring-boot jpa

我正在从旧的老式dabatase中读取数据。他们以某种方式使用0索引放置所有不存在的关系,例如: 对象人:

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

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

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用休眠@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

我看不到其他发布的解决方案,因为在Hibernate加载(即在您可以通过其他方式处理它之前)会发生异常。

答案 1 :(得分:1)

我假设你有

main_model

最简单的解决方案是在城市中添加id = 0的表行,其余为空

并将其发送给您的班级

constant_model

还有更多优雅的解决方案,但这将使您快速入门