form4 GmbH & Co.KG - Innovative Softwareentwicklung

Hibernate: Bidrektinales Mapping mit IndexColumn
SuchenSitemap

Hibernate: Bidrektinales Mapping mit IndexColumn

Oliver Meimberg, 22.05.2009

Wenn eine OneToMany Property bidirektional über das mappedBy-Attribut gemappt ist, weiger Hibernate sich, sich um die IndexColumn zu kümmern. Beispiel:

public class Parent {
@OneToMany(mappedBy="parent")
@IndexColumn(name = "idx")
private List children = new ArrayList();
// ...
}
public class Child {
@ManyToOne
private Parent parent;
// ...
}

… funktioniert leider nicht. Die IndexColumn wird von Hibernate nicht mehr verwaltet, da der Owner hier die Klasse Child ist.

Der Trick ist, das Ownership umzukehren:


public class Parent {
@OneToMany
@JoinColumn(name = "parent_id")
@IndexColumn(name = "idx")
private List children = new ArrayList();
// ...
}
public class Child{
@ManyToOne
@JoinColumn(name = "parent_id", updatable = false, insertable = false)
private Parent parent;
// ...
}

Nun gehts!

Danke an: http://josian.wordpress.com