【发布时间】:2013-04-01 18:34:02
【问题描述】:
我正在尝试将关系“OneToMany”添加到我正在创建的数据库中,以测试 ObjectDB 是否对我有任何好处。
到目前为止我所尝试的:
@Entity
public class Parent {
@Id
private int parentID;
private int childFK;
Set<Child> children;
public Parent(int p,int c) {
this.parentID = p;
this.childFK = c;
}
@OneToMany(orphanRemoval=true)
@JoinColumn(name="childFK")
public Set<Child> getChildren(){
return childern;
}
}
这个子类是:
@Entity
public class Child {
@Id
private int childID;
private String name;
public Child(int c,String n) {
this.childID = c;
this.name = n;
}
}
我的主要方法是:
EntityManagerFactory emf = Persistence.createEntityManagerFactory("$objectdb/db/test.odb");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
Parent p = new Parent(01,02);
em.persist(p);
Child c = new Child(02,"bob");
em.persist(c);
em.getTransaction().commit();
这将创建数据库没有问题,但不存在任何关系。 这是文档说明如何执行此操作。
我还尝试将 child 的实际实例添加到数据库中。这有点工作,因为它知道有一个可用的数据库实例,但它不知道如何使用它。
我已经尝试过查询:
SELECT p.getChildren() FROM Parent p
这只是不返回这样的方法 getChildren()。
有什么想法吗?
【问题讨论】:
-
如果您添加负 1,请评论说明原因。没有人会从这样做中受益。谢谢
-
到底是什么问题?是没有孩子的问题吗?你试过
SELECT p FROM Parent p然后在返回的父对象上调用getChildren()吗?