为什么spring.jpa. hib.naming.implicit-strategy和physical-strategy被忽略,而FK列有下划线?

qf9go6mv  于 2022-11-21  发布在  Spring
关注(0)|答案(1)|浏览(140)

我有两个实体类:

@Entity
@Data
public class Holiday {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    private LocalDate date;
    
    @ManyToOne
    private Calendar calendar;
    
}

@Entity
@Data
public class Calendar {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;
    
}

运行集成测试时,出现以下错误:
数据访问资源使用异常:无法提取结果集; SQL [N/A];嵌套异常错误为org. hib.异常错误。SQLGrammarException:无法在处提取结果集
... 78更起因:com.microsoft.sqlserver.jdbc.SQLServerException:列名'calendar_id'无效。at
数据库将calendarId作为FK。我知道下划线是默认值,但我的应用程序.yml文件具有:

spring:
  jpa:
    hibernate:
      naming:
        implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

这应该会让hib将该列显示为calendarId。为什么这不起作用?我使用的是Sping Boot 2.7.5。

qv7cva1a

qv7cva1a1#

您可以明确命名数据行:

@Column(name = "Calendarid")

相关问题