2013-12-12 247 views
1

我正在使用JEE技術實現簡單的Blog應用程序-EJB,JPA持久性,MySQL DB,Apache TomEE服務器。 我不知道如何註釋一些實體內部的類型,才能正確映射到合適的mysql類型。JPA類型映射問題

例如,我有一個名爲「郵報」有場「內容」,而這裏的實體是如何我已經註解是:

@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
@Column(name = "post_content", length=65535) 
private String content; 

警告抱怨,對於列屬性的默認是255,但數據庫列有655535.長度如果指定適當長度的警告將消失。

+0

感謝您快速回復。我忘了放長度參數。此外,我認爲我需要明確指定一個我想要字符串映射到的mysql文本類型(varchar,longvarchar,text,blob)。 (顯然持久性提供者正在處理類型轉換)。 – Vladimir