web-dev-qa-db-ja.com

org.postgresql.util.PSQLException:エラー:値が型文字vary(255)に対して長すぎます

プロジェクトを実行すると、次のエラーが表示されます: enter image description here

目標は、hibernateを使用してjsonテキストをデータベースに保存することです。

Users.JavaUsersBooks.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
11
Albin Gjoka

255文字を超える文字列値を保存しようとしました。カラムの長さを増やすだけ

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

データベースの列の長さも変更する必要があります。

使うとき

@Column(name = "xxx")

Hibernateはデフォルトの列の長さを使用します。

非常に大きなテキストデータには@Lobを使用できます。

tblusersの代わりにxxx_usersを使用してください。

Userの代わりにUsersを使用します。

関連付けのCascadeType.ALL部分で@OneToManyを使用します。

関連付けの@ManyToOne部分に遅延読み込みを使用します。

@ManyToOne(fetch = FetchType.Lazy)
pravate User user;
13
v.ladynev

255文字を超える文字列の場合、列の長さを増やすことができます。

@Column(length = 2048)
private String column;

大きいサイズの場合:

@Lob
private String column;

サイズ無制限の場合:

@Column(columnDefinition="text")
private String column;
5
veben

エラーメッセージは、宛先列(255)に対して大きすぎる文字列を格納しようとしていることを示しています。

次のいずれかを行うことができます。

  • 列のサイズを大きくするか、
  • 列タイプをVARCHAR(255)ではなくTEXTに変更します。
1