Tha*_*ham 73 java mysql orm jpa
要求是用户可以写一篇文章,因此我选择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
}
Run Code Online (Sandbox Code Playgroud)
在我的MYSQL数据库中,content
是类型Text
.我希望会有这样的东西java.sql.Text
,因为它java.sql.Blob
是一个真实的类型,但遗憾的是,这不存在
Pas*_*ent 123
由于您使用的是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;
Run Code Online (Sandbox Code Playgroud)
Rei*_*unk 94
随着@Lob
我总是LONGTEXT
在MySQL中结束.
为了让TEXT
我以这种方式声明它(JPA 2.0):
@Column(columnDefinition = "TEXT")
private String text
Run Code Online (Sandbox Code Playgroud)
找到这个更好,因为我可以直接选择列在数据库中的文本类型.
对于columnDefinition
它也是良好的阅读此.
编辑:在申请之前,请注意Adam Siemions 评论并检查您正在使用的数据库引擎columnDefinition = "TEXT"
.
小智 20
对于mysql'text':
@Column(columnDefinition = "TEXT")
private String description;
Run Code Online (Sandbox Code Playgroud)
对于mysql'longtext':
@Lob
private String description;
Run Code Online (Sandbox Code Playgroud)