位数据类型映射到 Java 域对象中的什么

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 中的位数据类型。我有一个列名,里面有一个破折号,我必须更改。

Aar*_*and 5

“-”附近的语法不正确。

这告诉我您已经命名了一个带有破折号的数据库、表或列,而不是 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, Frankor WhatTheHeckDataTypeIsThis,解析器仍然会由于连字符而出现上述错误,甚至在它费心验证数据类型之前。

因此,请检查您的表名和列名,并确保您的名称不使用破折号、空格或其他特殊字符,它们不是保留字,并且您提供的每个名称都遵守有据可查的标识符规则. 如果您可以强制 POJO 使用 正确分隔坏名称[square brackets],则可以解决此错误,但这不是最佳实践。