JPA - Сохраняющиеся свойства больших объектов на Postgresql - PullRequest
4 голосов
/ 31 января 2012

У меня есть поле, определенное следующим образом

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?

Ответы [ 3 ]

4 голосов
/ 08 февраля 2012

Вот как я решаю свою проблему:

@Column(length=100000)
private String details;
1 голос
/ 31 января 2012

Поскольку вы используете postgresql, возможно, проще всего отобразить столбец как обычный clob, а не как nclob, поскольку postgresql не имеет отдельных типов nvarchar и т. Д.

1 голос
/ 31 января 2012

@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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...