繁体   English   中英

JPA:如何将String保存到数据库字段中,键入MYSQL Text

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

要求是用户可以写一篇文章,因此我选择为mysql数据库中的content字段键入Text 如何将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数据库中, contentText类型。 我希望会有像这样的java.sql.Text ,因为java.sql.Blob是一个实际类型,但遗憾的是,它不存在

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

9.1.19 Lob注释

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

所以声明这样的事情:

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

参考

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

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

要获取TEXT我就这样声明(JPA 2.0):

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

找到这个更好,因为我可以直接选择列在数据库中的文本类型。

对于columnDefinition ,也可以阅读

编辑:在应用columnDefinition = "TEXT"之前,请注意Adam Siemions 注释并检查您正在使用的数据库引擎。

对于mysql'text':

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

对于mysql'longtext':

@Lob
private String description;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM