一尘不染

JPA:如何将字符串保留到数据库字段中,键入MYSQL Text

mysql

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


阅读 363

收藏
2020-05-17

共1个答案

一尘不染

由于您使用的是JPA,因此请使用Lob注释(和可选的Column注释)。这是JPA规范对此的说明:

9.1.19吊球注释

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

因此,声明如下:

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

参考文献

  • JPA 1.0规范:
    • 第9.1.19节“ Lob注释”
2020-05-17