【发布时间】:2011-07-25 07:48:24
【问题描述】:
我在 JPA 的 OneToMany 关系实现方面遇到了一个严重问题,我正在寻找一个合理的解决方法。问题是 JPA 似乎对阅读它的 @OneToMany 注释感到困惑并返回:
“Flea.dog”声明了一个与预期类型“blob”不兼容的列。
Flea.dog 是一个数字字段。该问题似乎是一个已知的错误: https://issues.apache.org/jira/browse/OPENJPA-1481
问题是这样创建的:我有两个实体 Dog 和 Flea,A 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" 不兼容的列。
如果有人有解决方法或可以看到我的明显错误,我将不胜感激。
【问题讨论】:
-
OpenJPA 不是 JPA 的唯一实现。你可以试试另一个免费的,比如EclipseLink,看看它是否有同样的问题。
-
我很乐意,但是我的雇主要求使用 OpenJPA。我知道这在休眠状态下工作正常,我假设 EclipseLink
标签: java database jpa annotations