Java 用空格休眠slqjdbc4列
我需要用hibernate在Java中映射sqlserver中的一个表,该表的列名中有空格。 我将SQLServer2008JRE7com.microsoft.Sqlserver.sqljdbc4与Hibernate3.3.2一起使用 我在不同的论坛上发现了很多类似的问题,但我读到的解决方案都不管用 我试着用反勾Java 用空格休眠slqjdbc4列,java,sql-server,hibernate,sql-server-2008,Java,Sql Server,Hibernate,Sql Server 2008,我需要用hibernate在Java中映射sqlserver中的一个表,该表的列名中有空格。 我将SQLServer2008JRE7com.microsoft.Sqlserver.sqljdbc4与Hibernate3.3.2一起使用 我在不同的论坛上发现了很多类似的问题,但我读到的解决方案都不管用 我试着用反勾 <property name="nameSpaces" type="string" > <column name="`Name with sp
<property name="nameSpaces" type="string" >
<column name="`Name with spaces`" not-null="false" />
</property>
我还尝试使用[]brakets,但hibernate再次将其转换为`
<column name="[Name with spaces]" not-null="false" />
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near '`'.
最后我也试了两种
<column name="`[Name with spaces]`" not-null="false" />
或
没有成功
有人能帮我吗?是否有任何hibernate配置可以更改以使用这些列名
谢谢BilalDja的答案隐藏在上面的评论中。我发现他的答案很有帮助,所以我想我会在这里为其他有同样问题的人添加答案 这个问题很难调试,我必须深入研究hibernate和jdbc代码,最终找到真正的SQL语句,该语句是为从数据库获取数据而创建的。然后,我复制了它的值,并在我的SQL Server数据库上手动运行它。很明显,语法错误是由列名中的空格引起的 为了解决这个问题,我刚刚跳过了问题列名周围的双引号,正如BilalDja在评论中解释的那样,并在这里稍微扩展了一下
@Column(name = "\"Column name\"")
private String variableColumnWillMapTo;
就这样,问题解决了,不再出现语法错误。为什么要在列名中加空格?使用snake_case我不想要空格,不幸的是我没有设计数据库,我被要求不要更改列名。我的朋友,我是注释迷。我尝试了一下,它在注释中运行得非常流畅@实体@Tablename=\test\u table\public class TestModel{@Id@Columnname=\testid\private int Id;public TestModel{}
@Column(name = "\"Column name\"")
private String variableColumnWillMapTo;