【问题标题】:JPA @OneToMany results emptyJPA @OneToMany 结果为空
【发布时间】:2013-04-16 20:32:44
【问题描述】:

我正在尝试通过 JPA 访问 MySQL 数据库,但结果始终为空。

public class Part {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    ...
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "owner", referencedColumnName = "id")
    private Owner owner;
    ...
}

public class Owner {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    ...
    @OneToMany(mappedBy = "owner")
    private Set<Part> parts;
    ... 
}

每当我尝试将部件连接到所有者时,结果集都是空的。打电话后,例如。 size() 方法,它仍然是空的。

List<Owner> owners = em.createQuery("...", Owner.class).getResultList();

for (Owner o : owners) {
    System.out.print(o + ": ");
    Set<Part> parts = o.getParts();
    parts.size()
}

这里的零件集总是空的。在数据库中它似乎已连接,但我无法从中获得任何结果。我做错了什么?

【问题讨论】:

  • 如何确定它是空的?打印尺寸时会发生什么?当您遍历零件并打印每个零件时会发生什么?
  • @JBNizet size() 返回 0,System.out.println(parts) 打印 {[]}
  • 查询是什么?您能否向我们展示示例数据并告诉我们所选所有者的 ID 是什么?
  • @JBNizet 查询是“SELECT o FROM owner o”。它正确地返回所有者。示例数据库具有: - 两个部分(id、所有者),均分配给所有者 #1。 - 一个所有者(ID、姓名)。
  • 我什至对这个查询有效。它应该是“从所有者 o 中选择 o”。尝试更改数据以查看它是否返回您的修改。确保您已尽职尽责。

标签: java mysql jpa eclipselink


【解决方案1】:
猜你喜欢
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 1970-01-01
相关资源
最近更新 更多