The requirement is that the user can write an article, therefore I choose type Text for the content field inside mysql database. How can I convert
Since you're using JPA, use the Lob annotation (and optionally the Column annotation). Here is what the JPA specification says about it:
9.1.19 Lob Annotation
A
Lobannotation specifies that a persistent property or field should be persisted as a large object to a database-supported large object type. Portable applications should use theLobannotation when mapping to a database Lob type. The Lob annotation may be used in conjunction with theBasicannotation. A Lob may be either a binary or character type. The Lob type is inferred from the type of the persistent field or property, and except for string and character-based types defaults to Blob.
So declare something like this:
@Lob
@Column(name="CONTENT", length=512)
private String content;
for mysql 'text':
@Column(columnDefinition = "TEXT")
private String description;
for mysql 'longtext':
@Lob
private String description;
With @Lob I always end up with a LONGTEXTin MySQL.
To get TEXT I declare it that way (JPA 2.0):
@Column(columnDefinition = "TEXT")
private String text
Find this better, because I can directly choose which Text-Type the column will have in database.
For columnDefinition it is also good to read this.
EDIT: Please pay attention to Adam Siemions comment and check the database engine you are using, before applying columnDefinition = "TEXT".