2016-04-06 18 views
3

様々なタイプの文字の値が長すぎる私のprojectexecutingとき、私はこのerror enter image description hereorg.postgresql.util.PSQLException:ERROR:(255)

取得し、私はその理由を知りません。

hibernateを使用してdatabaseにテキストをsaveJsonにすることです。

Users.java & UsersBooks.javaは、同様に

enter image description here

ですBooks.java:あなたは、文字列値に255を超える文字長を保存しよう

@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

PostgreSQLに送信されるSQLとは何ですか? –

答えて

5

。列の長さを増やすだけで

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

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

は、あなたが使用している場合

@Column(name = "xxx") 

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

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

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

UserUsersの代わりに使用してください。

アソシエーションの@OneToMany部分にCascadeType.ALLを使用してください。

アソシエーションの@ManyToOne部分に遅延ロードを使用します。

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

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

次のいずれかを実行できます

  • は、列のサイズを増やすか、TEXTの代わりVARCHAR(255)から
  • 変更列タイプを。
  • あなたは列の長さを増やすことができます以上255文字の長さの文字列の
0

@Column(length = 2048) 
private String column; 

大きなサイズの場合:

@Lob 
private String column; 

無制限のサイズの場合:

@Column(columnDefinition="text") 
private String column; 
関連する問題