我有这样的事情:
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
答案 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