我正在使用 JEE 技术(EJB、JPA 持久性、MySQL 数据库、Apache TomEE 服务器)实现简单的博客应用程序。 我不确定如何注释实体内部的某些类型以正确映射到适当的 mysql 类型。
例如,我有一个名为“Post”的实体,其中包含字段“content”,这是我对其进行注释的方式:
@Column(name = "post_content", columnDefinition = "TEXT", nullable = false)
private String content;
此字段表示博客文章的内容,其长度不受限制。 (博客文章可以很长)。我知道在 JPA 中默认情况下,String 被映射到 mysql varchar(255) 类型。这是我收到的警告;
WARN [http-bio-8080-exec-10] openjpa.jdbc.Schema - Existing column "post_content" on table "post" is incompatible with the same column in the given schema definition. Existing column:
Full Name: post.post_content
Type: longvarchar
Size: 65535
Default: null
Not Null: true
Given column:
Full Name: post.post_content
Type: varchar
Size: 255
Default: null
Not Null: true
注释此类字段的正确方法是什么?
最佳答案
@Column(name = "post_content", length=65535)
private String content;
警告提示列属性的默认值为 255,而数据库列的长度为 655535。如果您指定正确的长度,警告将消失。
关于mysql - JPA 类型映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20553616/