java - OpenJPA 将具有 oneToMany 映射的字段视为 Blob

标签 java database jpa annotations

我在 JPA 实现 OneToMany 关系时遇到严重问题,我正在寻找合理的解决方法。问题是 JPA 似乎在阅读它的 @OneToMany 注释时感到困惑并返回:

"Flea.dog" declares a column that is not compatible with the expected type "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));

虽然我在 Oracle 上遇到过同样的问题,但我在示例中使用的是 H2。

实体如下:

@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" declares a column that is not compatible with the expected type "blob".

如果有人有变通方法或可以看到我的明显错误,我将不胜感激提供一些反馈。

最佳答案

收到相同的错误消息,因为我忘记将 Dog 实体放入 persistence.xml 中。

关于java - OpenJPA 将具有 oneToMany 映射的字段视为 Blob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5473666/

相关文章:

java - 如何在JMeter中跨线程组传递变量?

java - H2数据库控制台: how to connect to an embedded H2 JPA database?

java - JPA/Hibernate 内存不足异常

java - 找到最长的重复子数组

java - 清理后,我在 Eclipse 中收到错误警告

php - 使用php的数组数据问题

MySQL显示查询中使用的索引

php - 如何订购两个日期列并从 mariadb 的一个表中获取最新的 20 条记录?

java - 如何使用 LEFT JOIN 创建 JPA NamedQuery

java - Zip4j 无法删除或覆盖文件内的文件