我可以动态修改Hibernate / JPA属性吗?

时间:2016-02-07 16:41:12

标签: java hibernate jpa

我有一个实体,它有一个我需要为特定配置或会话工厂制作Transient的列。基本上,该列永远不应该在一个特定配置的update或insert语句中发送,并且在检索数据时将由拦截器设置。对于任何其他配置,该列应保留在数据库中。有没有办法在运行时/动态配置列,基于会话工厂或配置?我能够使列瞬态并正确设置,但我需要它保留一些配置。

编辑我最初使用“过滤器”但意味着“拦截器”

enter image description here

2 个答案:

答案 0 :(得分:1)

注释是一种语法元数据形式,可以添加到Java源代码中,因此您无法在运行时更改它。

但是,如果必要的话,java注释可以在运行时通过反射api访问程序员。有关如何使用Javassist添加注释的示例是here

正如Dragan建议的那样,我的建议是你可以在不需要的地方将其设置为null。

答案 1 :(得分:0)

您可以创建两个实体,作为一个表的映射。在第一个中,你的列在另一个列中将是瞬态的。我已经遇到过这样的问题了,我认为打开会话后无法更改映射配置。