2011-03-29 44 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。