Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JPA: how do I persist a String into a database field, type MYSQL Text

Tags:

java

mysql

orm

jpa

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 Java String into MySQL Text

Here you go 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 } 

In my MYSQL database, content is type Text. I was hoping that there would be something like this java.sql.Text, since java.sql.Blob is an actual type, but sadly, that does not exist

like image 781
Thang Pham Avatar asked Oct 05 '10 21:10

Thang Pham


People also ask

Can we use JPA with MySQL?

Implementation: We are going to build a simple Java application by creating a maven project and we are going to save some data inside the MySQL Database with the help of both Hibernate and JPA concepts. Step 2: When you have successfully created a maven project you have to add some dependencies in your pom. xml file.

Is @column mandatory in JPA?

@Column. Let's start with the @Column annotation. It is an optional annotation that enables you to customize the mapping between the entity attribute and the database column.


1 Answers

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 Lob annotation 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 the Lob annotation when mapping to a database Lob type. The Lob annotation may be used in conjunction with the Basic annotation. 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; 

References

  • JPA 1.0 specification:
    • Section 9.1.19 "Lob Annotation"
like image 130
Pascal Thivent Avatar answered Oct 03 '22 21:10

Pascal Thivent