JPA:如何将字符串保存到数据库字段中,键入MYSQL文本

2022-08-31 10:58:14

要求是用户可以写一篇文章,因此我为mysql数据库中的字段选择类型。如何转换为TextcontentJava StringMySQL 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数据库中,是类型。我希望会有这样的东西,因为这是一个实际的类型,但可悲的是,它不存在contentTextjava.sql.Textjava.sql.Blob


答案 1

由于您使用的是 JPA,因此请使用注释(以及可选的注释)。以下是JPA规范对此的描述:LobColumn

9.1.19 Lob 注释

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

因此,声明如下内容:

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

引用

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

答案 2

我总是在MySQL中结束一个。@LobLONGTEXT

为了得到它,我以这种方式声明它(JPA 2.0):TEXT

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

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

因为阅读这篇文章也很好。columnDefinition

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


推荐