Java JPA@OneToMany结果为空

Java JPA@OneToMany结果为空,java,mysql,jpa,eclipselink,Java,Mysql,Jpa,Eclipselink,我正在尝试通过JPA访问MySQL数据库,但结果总是空的 public class Part { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; ... @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "owner", referencedColumnName = "id") pri

我正在尝试通过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.printlnparts打印{[]}查询是什么?您能否向我们展示示例数据并告诉我们所选所有者的ID是什么?@JBNizet查询是SELECT o FROM owners o。它正确地返回所有者。示例数据库有:-两个部分id,所有者,都分配给所有者1。-一个所有者id,name。我甚至很惊讶这个查询能起作用。它应该是从所有者o中选择o。尝试更改数据以查看它是否返回您的修改。确保你已经完成了你的任务。