Java JPA-在Postgresql上持久化LOB属性

Java JPA-在Postgresql上持久化LOB属性,java,postgresql,jpa,orm,Java,Postgresql,Jpa,Orm,我有一个这样定义的字段 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)] 该表在数据库中尚不存在 我应该告诉H

我有一个这样定义的字段

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什么?

@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 Serializable类型。

因为您使用的是postgresql,可能最容易将列映射为普通clob,而不是nclob,因为postgresql没有单独的nvarchar等类型。

这里是我如何解决问题的:

@Column(length=100000)
private String details;

什么是“Hibernate可序列化类型”?使用此解决方案,我在数据库字段中获得数字。通过此提示,我不再获得异常,但数据库中的列为空,我知道该列应该包含数据。