mysql - JPA 类型映射问题

标签 mysql hibernate jpa ejb openjpa

我正在使用 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/

相关文章:

java - 如何在Hibernate中级联删除?

java - 跟踪更改的数据库设计 - w/Hibernate

java - Hibernate 1 个模型的多个表名

mysql - 使用 Id 从数据库中获取数据

MySQL - 根据表名列表是否存在表名

java - 提高多对多关系中的 Hibernete 性能

java - 为什么这个流不返回任何元素?

用于客户数据的 PHP MySQL 嵌套列表

php - 创建MySQL时更多外键

JPA只执行union中的第一个select语句?