Hibernate - Eins-zu-viele-relation - Fremdschlüssel-immer "null"

Habe ich zwei wirklich einfache Objekte und ein Objekt enthalten sollte, die andere in einer "eins-zu-viele" - Beziehung in einem Satz. Die Objekte korrekt eingefügt in der Datenbank, aber der Fremdschlüssel in der "Kinder" - Tabelle ist immer "null".

Ich kann nicht herausfinden, warum:

Dies ist das test-Objekt und halten Sie die Kinder in seinem Satz:

@Entity
@Table(name="test")
public class TestObj {

    public TestObj(){}

    private Long id;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }

    private Set<Children> children = new HashSet<Children>();

    @OneToMany(mappedBy = "testObj", cascade = CascadeType.ALL)
    public synchronized Set<Children> getChildren() {
        return children;
    }
    public synchronized void setChildren(Set<Children> children) {
        this.children = children;
    }
    public void addChildren(Children child){
        children.add(child);
    }
}

Dies ist die Kinder-Objekt und es hält einen zurück-link auf die "TestObj":

@Entity
@Table(name = "children")
public class Children {

    public Children(){}

    private Long id;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    private TestObj testObj;

    @ManyToOne
    @JoinColumn
    public TestObj getTestObj() {
        return testObj;
    }

    public void setTestObj(TestObj testObj) {
        this.testObj = testObj;
    }
}

Ich anhalten, diese Objekte mit diesem code:

EntityManagerFactory entityManagerFactory = HibernateEntityMangerSingelton.getEntityManagerFactory();
EntityManager entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();


TestObj user = new TestObj();

Children child = new Children();
user.addChildren(child);
try {

    entityManager.persist(user);

    entityManager.getTransaction().commit();

} catch (Exception e) {
    System.out.println(e);
}finally{
    entityManager.close();
}

Kann mir erklären, warum dies passiert ist?

  • können Sie Ihre Antwort?
InformationsquelleAutor jan | 2013-05-31
Schreibe einen Kommentar