目標は、hibernateを使用してjson
テキストをデータベースに保存することです。
Users.Java
&UsersBooks.Java
も同様です。
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
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;
255文字を超える文字列の場合、列の長さを増やすことができます。
@Column(length = 2048)
private String column;
大きいサイズの場合:
@Lob
private String column;
サイズ無制限の場合:
@Column(columnDefinition="text")
private String column;
エラーメッセージは、宛先列(255)に対して大きすぎる文字列を格納しようとしていることを示しています。
次のいずれかを行うことができます。
VARCHAR(255)
ではなくTEXT
に変更します。