Hibernate,SQL Server 2016 = SQL错误:207 - 列名无效

时间:2018-01-03 12:19:41

标签: java sql-server hibernate

我的问题是我在SQL Server 2016中有2个模式,但是使用相同的表。我已经改变了两个,并且每个都添加了3个相同的列。但是当hibernate想要向这个改变的表添加新数据时,它会给我一个例外

Caused by: java.sql.SQLException: Invalid column name 'claim_number'.

是的,列名与@Column中添加的名称相匹配。

@Column(name = "claim_number", nullable = true, length = 30)
private String claimNumber;

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这个问题与Spring Boot + Hibernate + SQL Server类似。 检查解决方案,看看是否可以应用类似的东西。

Hibernate @Column annotation not work

答案 1 :(得分:0)

问题1:

原因:java.sql.SQLException:无效的列名'claim_number'。

问题分析:

如果我们检查列名,就会发现

i)它包含下划线(“ _”)。

解决方案#1:

Hibernate使用各种类型的命名策略。该列中包含下划线,那么我们需要使用以下命名策略。

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

N.B:要检查错误,可以在 application.properties 文件中添加以下属性。它将在控制台中显示sql,您可以做出决定。因此,请添加它:

# Show or not log for each sql query
spring.jpa.show-sql = true.

问题2:

原因:java.sql.SQLException:无效的列名'claimnumber'。

问题分析:

如果我们检查列名,就会发现

i)它包含小写字符串。没有下划线。

解决方案2:

有时,开发人员创建一个表,该表的列仅包含小写字符串。那时我们需要使用休眠的另一种命名策略。

# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy