java - hibernate ,SQL Server 2016 = SQL 错误 : 207 - Invalid column name

标签 java sql-server hibernate

我的问题是我在 SQL Server 2016 中有 2 个模式,但具有相同的表。我改变了两者,并分别添加了 3 个相同的列。但是当 hibernate 想要向这个改变的表中添加新数据时,它给了我一个异常(exception)

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

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

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

有什么想法吗?

最佳答案

问题#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

注意:为了检查错误,您可以在 application.properties 文件中添加以下属性。它将在控制台中显示 sql,您可以做出决定。所以请添加它:

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

问题#2:

原因:java.sql.SQLException:列名称“claimnumber”无效。

问题分析:

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

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

解决方案#2:

有时开发人员会创建一个表,其中的列仅包含小写字符串。到时候就需要用到hibernate的另一种命名策略了。

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

关于java - hibernate ,SQL Server 2016 = SQL 错误 : 207 - Invalid column name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48077274/

相关文章:

sql - 在 SQL Server 中持久显示更新的行

java - 获取特定数量的记录在 Hibernate 中不起作用

hibernate - 为什么 EhCacheProvider 被弃用?

java - hashcode的Object类默认实现是否使用identityhashcode

java - hibernate如何保存一对多/多对一的注解? ( child 不储蓄)

sql-server - 如何将 SQL Server 合并到 Nuxt.js 应用程序中

mysql - 即使提供了 Bean,SessionFactory 也不会 Autowiring

java - 文件系统到 FTPFile[]?

java - 无法计算 XPath 中的表达式

sql-server - SSIS 无法将数据插入具有计算列的表中