Hibernate: one-to-many Problem --> keine Daten

Kryptaesthesie

Erfahrenes Mitglied
Hallo zusammen :)

Ich habe in der Mapping-XML zu meinem User-Objekt folgenden Eintrag:
Code:
        <set name="roles" table="USER_ROLE">
        	<key column="userID"/>
        	<one-to-many class="com.xyz.obj.db.UserRole"/>
        </set>

In dem User-Objekt habe ich das Set und die Get- u. Set-Methode:
Code:
	private Set<UserRole> roles = new HashSet<UserRole>();

	public Set<UserRole> getRoles() {
		return roles;
	}
	
	public void setRoles(Set<UserRole> roles) {
		this.roles = roles;
	}

Das Objekt UserRole sieht so aus:
Code:
package com.xyz.obj.db;

import java.io.Serializable;
import java.util.Calendar;


public class UserRole implements Serializable{
	private static final long serialVersionUID = 1L;

	private int userID;
	private int roleID;
	private long created;
	
	public UserRole() {
		setCreated(Calendar.getInstance().getTimeInMillis());
	}
	
	public UserRole(int userID, int roleID) {
		setUserID(userID);
		setRoleID(roleID);
		setCreated(Calendar.getInstance().getTimeInMillis());
	}

	public int getUserID() {
		return userID;
	}

	public void setUserID(int userID) {
		this.userID = userID;
	}

	public int getRoleID() {
		return roleID;
	}

	public void setRoleID(int roleID) {
		this.roleID = roleID;
	}

	public long getCreated() {
		return created;
	}

	public void setCreated(long created) {
		this.created = created;
	}
	
}

und hat folgendes Mapping:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
	<class name="com.xyz.obj.db.UserRole" table="USER_ROLE">
		<composite-id>
			<key-property name="roleID" column="ROLEID"/>
			<key-property name="userID" column="USERID"/>
		</composite-id>
		<property name="created"/>
    </class>
</hibernate-mapping>

In der Datenbank stehen die Einträge richtig drin.
Aber wieso werden bei meinem User-Objekt roles-Set nicht gefüllt? Andere Variablen, die aber aus der User-Tabelle gefüllt werden, sind nicht leer.


Wo könnte das Problem liegen?
Danke schon mal für eure Hilfe!

Gruß
Gerrit
 
Okay, ich muss mich korrigieren.
Ich habe meistens keine Daten! Das macht die Sache ja noch undurchsichtiger!

Also ich habe mal eine Test-JSP aufgesetzt, in der ich die User und deren Rollen anzeigen lassen:

Code:
<div style="background-color: aqua; width: 600px; padding: 4px;">
	<%
		try {
			List<User> userlist = new UserDAO().getListOfUser();
			for(User cur : userlist) {
				%><a href="mailto:<%= cur.getEmail() %>">"<%= cur.getUsername() %>"</a>
					<sup>
						<%
							for(UserRole curBez : cur.getRoles()) {
								%><%= curBez.getUserID() %>/<%= curBez.getRoleID() %>&nbsp;<%
							}
						%>
					</sup>
				<%
			}
		} catch(DAOException e) {
			logger.error("Nutzer-Liste können nicht angezeigt werden.", e);
		}
	%>
</div>

Jetzt habe ich diese Seite zig mal aufgerufen und siehe da, einmal wurden mir die Rollen angezeigt! :rolleyes:
Einmal von vielleicht 20 Versuchen.
Wie kann das kommen?


Gruß
Gerrit
 
Zurück