我对JPA实施OneToMany关系存在严重问题,我正在寻找合理的解决方法。问题是,JPA看起来很困惑,阅读它的@OneToMany注释并返回:
“Flea.dog”声明一个与预期类型“blob”不兼容的列。
Flea.dog是一个数字字段。该问题似乎是一个已知的错误: https://issues.apache.org/jira/browse/OPENJPA-1481
问题创建如下:我有两个实体Dog和Flea,一只狗有很多跳蚤,由跳蚤桌上的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”声明一个与预期类型“blob”不兼容的列。
如果有人有工作或者我可以看到明显的错误,我会感激一些反馈。
答案 0 :(得分:5)
得到了相同的错误消息,因为我忘记将Dog-entity放在persistence.xml中。