我想注释我的字段,因为大多数时候IDE都会生成getter和setter。
当我用@Id
注释标识符字段时,实体的访问策略变为基于字段。但是,当我调用getId()
时,我不希望得到延迟初始化异常,以防实体延迟加载。
我想注释字段,但我也想要基于属性的访问策略。我怎么能这样做?
我将@Access(AccessType.PROPERTY)
置于我的实体类之上,但随后我的JPA提供程序(即Hibernate)抛出org.hibernate.AnnotationException: No identifier specified for entity: ...
答案 0 :(得分:0)
尝试查看JPA Cache功能,这允许您返回一个集合并按ID或字段查找。使用AccessType库,您可以配置特定的实体管理器以便懒惰或急切地检索。
答案 1 :(得分:0)
在实体上指定@Access(AccessType.PROPERTY)
将导致提供程序仅查看注释的属性和访问实体,因此它应忽略字段注释。
@Access(AccessType.PROPERTY)注释也可用于方法和字段,允许使用不同的东西。在您的情况下,将其保留为默认值,继续向字段添加注释但使用@Access(AccessType.PROPERTY)注释标记它们将导致提供程序获取注释,但仍然使用属性来访问实体上的值。
如评论中所述,这不会影响延迟设置。