JPA:如何将一个string持久化到数据库字段中,键入MYSQL Text

要求是用户可以写一篇文章,因此我select了在MySQL数据库内的content字段中inputText 。 如何将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数据库中, contentTexttypes的。 我希望能有这样的java.sql.Text ,因为java.sql.Blob是一个实际的types,但不幸的是,这并不存在

由于您使用的是JPA,请使用Lob注释(以及可选的Column注释)。 以下是JPA规范所说的内容:

9.1.19 Lob注解

Lob注解指定持久性属性或字段应该作为大型对象持久保存到数据库支持的大对象types。 在映射到数据库Lobtypes时,便携式应用程序应该使用Lob注释。 Lob注释可以与Basic注释一起使用。 一个Lob可能是一个二进制或字符types。 Lobtypes是根据持久性字段或属性的types推断的,除了string和基于字符的types以外,默认为Blob。

所以宣布这样的事情:

 @Lob @Column(name="CONTENT", length=512) private String content; 

参考

  • JPA 1.0规范:
    • 第9.1.19节“注释”

使用@Lob我总是在MySQL中使用LONGTEXT

为了得到TEXT我这样声明(JPA 2.0):

 @Column(columnDefinition = "TEXT") private String text 

find更好的,因为我可以直接select哪个文本types的列将在数据库中。

对于columnDefinition ,阅读这个也很好。

编辑:请注意亚当Siemions 评论和检查您使用的数据库引擎,应用columnDefinition = "TEXT"

对于MySQL的“文本”:

 @Column(columnDefinition = "TEXT") private String description; 

对于mysql'longtext':

 @Lob private String description;