ana*_*ocs 2 sql-server-2008 java
当您有一列bit
数据类型时,在 Java POJO 将该表映射到使用javax.persistence
注释的对象时,将使用什么 Class 来表示该列?
我试过了Boolean
,没有用,并产生了以下错误:
org.hibernate.exception.SQLGrammarException: 无法插入: [com.DomainClassName]
java.sql.SQLException: '-' 附近的语法不正确。
编辑:Java 布尔值确实映射到 SQL Server 中的位数据类型。我有一个列名,里面有一个破折号,我必须更改。
“-”附近的语法不正确。
这告诉我您已经命名了一个带有破折号的数据库、表或列,而不是 POJO 在映射您的列时遇到问题。
例如,如果您已命名实体bar-none
并且 POJO 发出以下CREATE TABLE
语句:
CREATE TABLE dbo.foo(bar-none BIT);
Run Code Online (Sandbox Code Playgroud)
或者这个:
CREATE TABLE dbo.foo-bar(none BIT);
Run Code Online (Sandbox Code Playgroud)
你会得到这个错误:
消息 102,级别 15,状态 1,第 1 行
“-”附近的语法不正确。
事实上,即使您声明了 SQL Server 中不存在的数据类型,例如Boolean
, Frank
or WhatTheHeckDataTypeIsThis
,解析器仍然会由于连字符而出现上述错误,甚至在它费心验证数据类型之前。
因此,请检查您的表名和列名,并确保您的名称不使用破折号、空格或其他特殊字符,它们不是保留字,并且您提供的每个名称都遵守有据可查的标识符规则. 如果您可以强制 POJO 使用 正确分隔坏名称[square brackets]
,则可以解决此错误,但这不是最佳实践。
归档时间: |
|
查看次数: |
5561 次 |
最近记录: |