要求是用户可以撰写文章,因此我为mysql数据库中的Text
字段选择content
类型。如何将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数据库中,content
的类型为Text
。我希望有java.sql.Text
这样的东西,因为java.sql.Blob
是一个实际的类型,但遗憾的是,它不存在
答案 0 :(得分:119)
由于您正在使用JPA,请使用Lob
注释(以及可选的Column
注释)。以下是JPA规范对此的说法:
9.1.19 Lob Annotation
Lob
注释指定a 持久性属性或字段应该是 坚持作为一个大对象 数据库支持的大对象类型。 便携式应用程序应该使用 映射到a时的Lob
注释 数据库Lob类型。 Lob注释 可以与。一起使用Basic
注释。 Lob可能是 二进制或字符类型。该 Lob类型是从类型推断出来的 持久字段或属性,以及 除了字符串和基于字符 类型默认为Blob。
所以声明如下:
@Lob
@Column(name="CONTENT", length=512)
private String content;
答案 1 :(得分:83)
使用@Lob
我总是在MySQL中使用LONGTEXT
。
要获得TEXT
我这样声明(JPA 2.0):
@Column(columnDefinition = "TEXT")
private String text
更好地找到它,因为我可以直接选择列在数据库中的文本类型。
对于columnDefinition
,也可以阅读this。
编辑:在应用columnDefinition = "TEXT"
之前,请注意Adam Siemions comment并检查您正在使用的数据库引擎。
答案 2 :(得分:14)
for mysql' text':
@Column(columnDefinition = "TEXT")
private String description;
for mysql' longtext':
@Lob
private String description;