0

我有这样的事情:

字符串状态码

在映射中我有:

statusCode 列:“status_cd”,类型:“NVARCHAR”

我尝试过使用 'varchar'、'VARCHAR' 和 'nvarchar' 我一直收到

org.springframework.beans.factory.BeanCreationException:创建名为“transactionManagerPostProcessor”
的bean时出错:bean初始化失败;嵌套异常是
org.springframework.beans.factory.BeanCreationException:创建名为“transactionManager”的 bean 时出错:设置 bean 属性“sessionFactory”时无法解析对 bean“sessionFactory”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为“sessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 org.hibernate.MappingException:无法确定类型:NVARCHAR,在表:CARD,列:[org.hibernate.mapping.Column(status_cd)]
at java.util.concurrent.FutureTask$Sync。
在 java.util.concurrent.FutureTask.run(FutureTask.java:138)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:908)
在 java.lang.Thread.run(Thread.java:619)

知道我在映射中可能缺少什么吗?我正在使用 grails 2.0 和 MS SQL

4

2 回答 2

1

假设 "type:" 等价于 Hibernate 如何使用该术语,那么问题是 type 需要引用 Hibernate 映射类型。也就是说type既不是java类型也不是sql类型。它是一个理解两者之间映射关系的 Hibernate 概念。Hibernate 开箱即用(计划在 5.0 中)中尚不存在国有化字符串支持。但它很容易添加。

首先,您需要在 Sting 和 NVARCHAR 之间定义一个 Hibernate 映射类型。您可以通过实现 UserType 或扩展内置的 Hibernate 映射类型之一(org.hibernate.type.StringType 可能是一个很好的起点)来完成此操作。

然后在映射中命名该实现。

于 2012-05-22T21:10:58.240 回答
1

Steve Ebersole 是对的,所以我可以补充:

在你映射一个'sqlType'中设置,尝试sqlType: "nvarchar", length: 255... Hibernate type, type: 'text' 默认为 varchar

于 2012-05-23T00:12:24.567 回答