JPA类型映射问题

时间:2013-12-12 20:30:53

标签: mysql hibernate jpa ejb openjpa

我正在使用JEE技术实现简单的Blog应用程序 - 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

注释这种领域的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

@Column(name = "post_content", length=65535)
private String content;

警告抱怨列属性的默认值为255,但数据库列的长度为655535.如果指定了适当的长度,则警告将消失。