Hibernate 在整个 Spring Boot 应用程序上设置属性访问策略

Posted

技术标签:

【中文标题】Hibernate 在整个 Spring Boot 应用程序上设置属性访问策略【英文标题】:Hibernate set property access strategy on whole Spring Boot application 【发布时间】:2019-08-09 05:53:33 【问题描述】:

据我所知,Hibernate 提供了两种访问策略:FIELD 和 PROPERTY。可以通过在实体上方设置注解@Access来定义它,但是在实现过程中每次都用策略设置@Access有点令人沮丧。有没有办法在整个应用程序上设置“全局”访问策略?

【问题讨论】:

【参考方案1】:

我认为 Spring Boot 默认不存在这样的属性。

但是,您可以为所有实体创建一个父类,以便在类级别只定义一次 @AccessType

文档

http://download.oracle.com/otn-pub/jcp/persistence-2.0-fr-eval-oth-JSpec/persistence-2_0-final-spec.pdf

2.3.1 默认访问类型(第23页)

默认情况下,单一访问类型(字段或属性访问)适用于 实体层次结构。实体层次结构的默认访问类型是 由属性上映射注释的位置决定 实体层次结构的实体类和映射超类 没有明确指定访问类型。

示例

@MappedSuperclass
@Access(value=AccessType.FIELD)
public class Parent  


@Entity
public class Child extends Parent 
    ...

【讨论】:

以上是关于Hibernate 在整个 Spring Boot 应用程序上设置属性访问策略的主要内容,如果未能解决你的问题,请参考以下文章

Spring-boot & hibernate,使用事务

JPA Spring Boot Hibernate Rest API:为啥Hibernate在插入之前会删除?

Spring Boot 和 Hibernate:打印/记录 DDL

Hibernate 和 CRUDRepository Spring Boot

Spring Boot / JPA / Hibernate,如何根据 Spring 配置文件切换数据库供应商?

在spring boot集成测试中获取org.hibernate.LazyInitializationException