Grails将String映射到nvarchar

时间:2012-05-22 20:44:12

标签: sql-server hibernate grails gorm

我有这样的事情:

String statusCode

在我的映射中:

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)]   
在java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303)   
在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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

设置映射'sqlType',尝试sqlType: "nvarchar", length: 255 ... Hibernate type,输入:'text'默认为varchar