拦截JPA查询以计算关键字段

时间:2014-04-29 21:44:30

标签: jpa spring-data

我对JPA很新。我有一个特定的存储库,它使用具有由调用者设置的部分的键和一些使用这些值自动计算的值。需要这个:)

由于密钥和实体是简单的Java类,因此在我看来,我需要将修改密钥的代码(或者用具有附加值的内部代码替换它)作为存储库实现。但是我不认为将代码从SimpleJpaRepository复制到我的自定义存储库是个好主意......我认为实体管理器应该可以实现某些功能。基本上我需要的是每次调用find()或delete()时调用的代理,获取实体,更新其密钥,将调用传递给真正的存储库实现。

有人能指出我正确的方向或做类似事情的例子吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在JPA中,你有很多活动,只选择最适合你的活动。看起来您正在寻找@PrePersist

http://www.objectdb.com/api/java/jpa/annotations/callback

也就是说,如果仅基于其他字段的数据计算这些字段的数据,则它违反数据库规范化。更敏感的方法是计算字段@Transient并仅提供getter,它将根据持久字段计算值。