JPA:如何将字符串持久化到数据库字段,输入mysql文本

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

要求用户可以写一篇文章,因此我选择类型。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是一个实际的类型,但遗憾的是,它并不存在。

提问于
用户回答回答于

既然使用的是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我总是以LONGTEXT在MySQL。

得到TEXT我声明是这样的(JPA 2.0):

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

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

columnDefinition阅读也是很好的。

然后再应用columnDefinition = "TEXT"...

扫码关注云+社区