【发布时间】: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