JPA - 访问stratagy

时间:2016-04-22 14:37:44

标签: java hibernate jpa

我想注释我的字段,因为大多数时候IDE都会生成getter和setter。 当我用@Id注释标识符字段时,实体的访问策略变为基于字段。但是,当我调用getId()时,我不希望得到延迟初始化异常,以防实体延迟加载。

我想注释字段,但我也想要基于属性的访问策略。我怎么能这样做?

我将@Access(AccessType.PROPERTY)置于我的实体类之上,但随后我的JPA提供程序(即Hibernate)抛出org.hibernate.AnnotationException: No identifier specified for entity: ...

2 个答案:

答案 0 :(得分:0)

尝试查看JPA Cache功能,这允许您返回一个集合并按ID或字段查找。使用AccessType库,您可以配置特定的实体管理器以便懒惰或急切地检索。

http://www.objectdb.com/java/jpa/persistence/cache

答案 1 :(得分:0)

在实体上指定@Access(AccessType.PROPERTY)将导致提供程序仅查看注释的属性和访问实体,因此它应忽略字段注释。

@Access(AccessType.PROPERTY)注释也可用于方法和字段,允许使用不同的东西。在您的情况下,将其保留为默认值,继续向字段添加注释但使用@Access(AccessType.PROPERTY)注释标记它们将导致提供程序获取注释,但仍然使用属性来访问实体上的值。

如评论中所述,这不会影响延迟设置。