2011-03-29 51 views
4

我在使用JPA的實現一對多的關係的一個嚴重的問題,我在尋找一個合理的解決方法。問題是JPA看起來很迷茫,它讀@OneToMany註釋並返回:OpenJPA的治療領域具有一對多映射爲BLOB

「Flea.dog」聲明與預期類型「blob」不兼容的列。

Flea.dog是一個數字字段。這個問題似乎是一個已知的錯誤: https://issues.apache.org/jira/browse/OPENJPA-1481

該問題創建如下:我有兩個實體狗和跳蚤,狗有跳蚤表中的dog_id代表許多跳蚤。這些實體被映射到具有不同名稱的表格Dog被映射到Madra,Flea被映射到feithidi。

的表如下所示:

CREATE TABLE madra (dogid BIGINT, name varchar(255), PRIMARY KEY (dogid)); 
CREATE TABLE feithidi (fleaid BIGINT, dogid BIGINT, PRIMARY KEY (fleaid)); 

我使用H2的例子,雖然我已經在Oracle同樣的問題。

的實體如下:

@Entity(name="feithidi") 
Flea{ 
    @Id 
    long fleaid; 

    @ManyToOne 
    @JoinColumn(name="dogid", insertable=false, updatable=false, nullable=true) 
    private Dog dog; 

} 

@Entity(name="madra") 
Dog{ 
    @Id 
    long dogid; 
    String name; 

    @OneToMany(mappedBy="dog") 
    private Set<Flea> fleas; 

} 

完整例外,我現在回到是:

(org.apache.openjpa.persistence.ArgumentException: 「Flea.dog」聲明一欄,是不是與預期的類型「斑點」兼容。

如果周圍的人有工作,也可以看到在我的部分明顯的錯誤,我會爲一些反饋表示感謝。

+1

OpenJPA的是不是JPA的唯一實現。你可以嘗試另一個免費的,比如[EclipseLink](http://www.eclipse.org/eclipselink/),看看它是否有同樣的問題。 – Powerlord 2011-03-29 14:30:32

+1

我很想,但是我的僱主要求OpenJPA。我知道這在hibernate中工作正常,我會假設EclipseLink – Lindalinian 2011-04-07 11:49:11

回答

5

得到了同樣的錯誤消息,因爲我已經忘了狗實體在persistence.xml。