【问题标题】:OpenJPA treats field with oneToMany Mapping as a BlobOpenJPA 将带有 oneToMany 映射的字段视为 Blob
【发布时间】: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


【解决方案1】:

收到相同的错误消息,因为我忘记将 Dog-entity 放在 persistence.xml 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-14
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多