要件は、ユーザーが記事を書くことができることです。したがって、mysqlデータベース内のText
フィールドにタイプcontent
を選択します。 Java String
をMySQL Text
に変換するにはどうすればよいですか
ここに行きますJim Tough
@Entity
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private Long userId;
private String title;
private String content;
private Integer vote;
//Constructors, setters, getters, equals and hashcode
}
MYSQLデータベースでは、content
はText
型です。 Java.sql.Text
は実際の型であるため、このようなJava.sql.Blob
が存在することを期待していましたが、残念ながら、それは存在しません
JPAを使用しているため、Lob
アノテーション(およびオプションでColumn
アノテーション)を使用します。 JPA仕様には、次のように記載されています。
9.1.19ロブ注釈
Lob
注釈は、永続プロパティまたはフィールドを、データベースでサポートされるラージオブジェクトタイプのラージオブジェクトとして永続化することを指定します。ポータブルアプリケーションは、データベースのLob型にマッピングするときにLob
注釈を使用する必要があります。 Lob注釈は、Basic
注釈と共に使用できます。 Lobは、バイナリタイプまたは文字タイプのいずれかです。 Lobタイプは、永続フィールドまたはプロパティのタイプから推測されます。ただし、文字列および文字ベースのタイプを除き、デフォルトはBlobです。
そのため、次のように宣言します。
@Lob
@Column(name="CONTENT", length=512)
private String content;
mysql 'text'の場合:
@Column(columnDefinition = "TEXT")
private String description;
mysql 'longtext'の場合:
@Lob
private String description;