我有一个像这样定义的字段
private java.sql.NClob details;
当我尝试构建以创建实体管理器时,我得到以下异常:
Caused by: org.hibernate.MappingException: Could not determine type for: java.sql.NClob, at table: messages, for columns: [org.hibernate.mapping.Column(details)]
该表尚未存在于数据库中。
我应该告诉Hibernate什么?
答案 0 :(得分:4)
这是我如何解决我的问题:
@Column(length=100000)
private String details;
答案 1 :(得分:1)
@Lob
表示该属性应保留在Blob或Clob中,具体取决于属性类型:java.sql.Clob
,Character[]
,char[]
和java.lang.String
将坚持在Clob。 java.sql.Blob
,Byte[]
,byte[]
和Serializable
类型将保留在Blob中。
@Lob
public String getFullText() {
return fullText;
}
@Lob
public byte[] getFullCode() {
return fullCode;
}
如果属性类型实现java.io.Serializable
并且不是基本类型,并且该属性未使用@Lob
注释,则使用Hibernate可序列化类型。
答案 2 :(得分:1)
由于您正在使用postgresql,因此最简单的方法是将列映射为普通clob而不是nclob,因为postgresql没有单独的nvarchar等类型。