G
Guest123
Hallo zusammen,
ich arbeite mich gerade in Hibernate ein, und versuche mich momentan an einer bidirektionalen many-to-one Beziehung.
Das Mapping selbst klappt, nur das Select funktioniert nicht wie gewünscht.
Die beiden Klassen, etwas vereinfacht, sehen so aus:
Und noch die Basisklasse:
Der Aufruf sieht dann so aus:
Gespeichert wird alle richtig. Auch die Abfrage 2 wird korrekt ausgeführt. Die selektierten User Objekte haben auch alle ein Gruppen Objekt. Bei der Abfrage (1) nach den Gruppen ist das Feld "userList" der Gruppen Objekte leider leer.
Hat jemand eine Idee, was ich falsch mache?
*gruß*
Sebastian
ich arbeite mich gerade in Hibernate ein, und versuche mich momentan an einer bidirektionalen many-to-one Beziehung.
Das Mapping selbst klappt, nur das Select funktioniert nicht wie gewünscht.
Die beiden Klassen, etwas vereinfacht, sehen so aus:
Java:
@Entity
@Table(name="ADMIN_GROUP")
public class Group extends DBObject{
@OneToMany(mappedBy="group")
private List<User> userList;
public Group(){
super();
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
Java:
@Entity
@Table(name="ADMIN_USER")
public class User extends DBObject{
@ManyToOne
@JoinColumn(name="groupID", nullable = false)
private Group group;
public User(){
super();
}
public void setGroup(Group group) {
this.group = group;
}
public Group getGroup() {
return group;
}
}
Java:
@Entity
@Table(name="ADMIN_OBJECT")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class DBObject{
@Column(length = 255, nullable = false)
private String name;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@Column(length=1024)
private String description;
@Column(nullable = false)
@Version
private Long version;
public DBObject(){
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getId(){
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Long getVersion() {
return version;
}
public void setVersion(Long version) {
this.version = version;
}
}
Der Aufruf sieht dann so aus:
Java:
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.save(org);
session.flush();
Group g = new Group();
User user = new User();
user.setGroup(g);
session.save(g);
session.save(user);
User user2 = new User();
user2.setGroup(g);
session.save(user2);
session.save(g);
session.flush();
//1
List<Group> groupList = session.createQuery("from Group as group").list();
for(Group group: groupList){
System.out.println(group);
}
//2
List<User> userList = session.createQuery("from User as user").list();
for(User u: userList){
System.out.println(u);
}
//System.out.println(g);
//System.out.println(g.getUser());
session.commit();
Gespeichert wird alle richtig. Auch die Abfrage 2 wird korrekt ausgeführt. Die selektierten User Objekte haben auch alle ein Gruppen Objekt. Bei der Abfrage (1) nach den Gruppen ist das Feld "userList" der Gruppen Objekte leider leer.
Hat jemand eine Idee, was ich falsch mache?
*gruß*
Sebastian