2016-04-06 2 views
3

Я получаю это error enter image description hereorg.postgresql.util.PSQLException: ОШИБКА: значение слишком долго для типа характера варьирования (255)

когда executing мой project, и я не знаю, почему.

Цель состоит в том, чтобы saveJson текст в database с помощью hibernate.

Users.java & UsersBooks.java является также,

enter image description here

Books.java:

@Entity 
@Table(name="tblbooks") 
public class Books { 


@Id 
@Column(name = "bookshareId") 
private int bookshareId; 

@Column(name="author") 
private String author; 

@Column(name = "availableToDownload") 
private int availableToDownload; 

@Column(name = "briefSynopsis") 
private String briefSynopsis; 

@Column(name="category") 
private String category; 

@Column(name = "completeSynopsis") 
private String completeSynopsis; 

@Column(name = "contentId") 
private int contentId; 

@Column(name = "copyright") 
private Date copyright; 

@Column(name="downloadFormat") 
private String downloadFormat; 

@Column(name="dtbookSize") 
private int dtbookSize; 

@Column(name = "freelyAvailable") 
private int freelyAvailable; 

@Column(name = "brf") 
private int brf; 

@Column(name = "daisy") 
private int daisy; 

@Column(name = "images") 
private int images; 

@Column(name = "isbn13") 
private String isbn13; 

@Column(name="language") 
private String language; 

@Column(name = "publishDate") 
private Date publishDate; 

@Column(name = "publisher") 
private String publisher; 

@Column(name = "quality") 
private String quality; 

@Column(name = "title") 
private String title; 

@OneToMany(mappedBy="book") 
private List<UsersBooks> usersBooks; 



//Getters & Setters 
+0

в базу данных вы определили тип поля поля и его длина равна 255, что является причиной здесь, p аренда, либо макс. От 255 до 1000 (дольше 255) или изменить тип с символа на текст или varchar. –

+0

Что такое SQL, отправленный PostgreSQL? –

ответ

5

Вы пытаетесь сохранить строковое значение длины более 255 символов. Просто увеличьте длину колонки

@Column(name = "xxx", length = 1024) 

необходимо также изменить длину столбца в базе данных.

При использовании

@Column(name = "xxx") 

Hibernate использует длину столбца по умолчанию.

Вы можете использовать @Lob для получения действительно больших текстовых данных.

Пожалуйста, используйте xxx_users вместо tblusers.

Использовать User вместо Users.

Используйте CascadeType.ALL на @OneToMany часть ассоциации.

Использовать ленивую загрузку по @ManyToOne частям ассоциации.

@ManyToOne(fetch = FetchType.Lazy) 
pravate User user; 
1

Сообщение об ошибке сообщает, что вы пытаетесь сохранить строку, которая слишком велика для столбца назначения (255).

Вы можете:

  • Увеличение размера столбца или
  • Изменить тип столбца TEXT вместо VARCHAR(255).
0

Для строки с более чем 255 символов длины вы можете увеличить длину столбца:

@Column(length = 2048) 
private String column; 

Для большого размера:

@Lob 
private String column; 

Для неограниченного размера:

@Column(columnDefinition="text") 
private String column; 
Смежные вопросы