Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Grails将字符串映射到nvarchar_Sql Server_Hibernate_Grails_Gorm - Fatal编程技术网

Sql server Grails将字符串映射到nvarchar

Sql server Grails将字符串映射到nvarchar,sql-server,hibernate,grails,gorm,Sql Server,Hibernate,Grails,Gorm,我有这样的想法: 字符串状态码 在映射中,我有: 状态代码列:“状态\u cd”,键入:“NVARCHAR” 我试过“varchar”、“varchar”和“nvarchar” 我一直收到 org.springframework.beans.factory.BeanCreationException:错误 正在创建名为“transactionManagerPostProcessor”的bean: bean初始化失败;嵌套异常是 org.springframework.beans.factory.

我有这样的想法:

字符串状态码

在映射中,我有:

状态代码列:“状态\u 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)
运行(Thread.java:619)

知道我在地图上遗漏了什么吗? 我使用Grails2.0和MS SQL假设“type:”与Hibernate使用该术语的方式相同,那么问题是该类型需要引用Hibernate映射类型。也就是说,类型既不是java类型,也不是sql类型。这是一个Hibernate概念,它理解两者之间的映射。Hibernate开箱即用(计划在5.0中使用)中还不存在国家化的字符串支持。但这很容易添加

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


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

Steve Ebersole是正确的,因此我可以添加:


在映射中设置一个,尝试
sqlType:“nvarchar”,长度:255
,type:'text'默认为varchar

刚刚修复了它,而不是type,我必须使用sqlType:'nvarchar'