我有一个全默认(Lombok除外)的Spring Boot 2.5.6+PostgreSQL项目,在Intellij IDEA 2021.2.3中打开了一个非常基本的JPA映射。JPA配置是用注释(没有XML)实现的。该应用程序本身运行良好,可以从数据库中保存和检索记录。在“Persistence”窗口中,我可以正确地看到我的JPA结构,数据源已分配。这是实体代码:
@Entity
@Data
...
public class Cover {
...
private String ageRestriction;
}
但是当我尝试使用例如执行查询时。
select c from Cover c
我得到一个错误:
jpa-ql> select c from Cover c
[2021-11-01 16:14:03] [42703] ERROR: column cover0_.agerestriction does not exist
[2021-11-01 16:14:03] Hint: Perhaps you meant to reference the column "cover0_.age_restriction".
我试图将命名策略配置添加到我的设置中,但没有效果:
spring:
jpa:
hibernate:
naming:
physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingStrategy
implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
我在持久性单元上下文菜单中也没有看到“分配命名策略”(见屏幕截图)。有没有办法强制JPA控制台使用与我的应用程序相同的命名策略?
附言
在指定之后,我已经设法使控制台工作
@Column
用于所有多字字段名称,并添加@Table注释
schema
和
name
属性。但我更希望能够以某种方式同步控制台和应用程序JPA/Hibernate配置。