我在使用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”声明一栏,是不是与预期的类型“斑点”兼容。
如果周围的人有工作,也可以看到在我的部分明显的错误,我会为一些反馈表示感谢。
OpenJPA的是不是JPA的唯一实现。你可以尝试另一个免费的,比如[EclipseLink](http://www.eclipse.org/eclipselink/),看看它是否有同样的问题。 – Powerlord 2011-03-29 14:30:32
我很想,但是我的雇主要求OpenJPA。我知道这在hibernate中工作正常,我会假设EclipseLink – Lindalinian 2011-04-07 11:49:11