Hallo,
ich habe 2 Entity Beans, User und Projekt. Zwischen beiden besteht eine @ManyToOne Beziehung, denn ein User kann mitglied in beliebig vielen Projekten sein und ein Projekt kann beliebig viele Mitglieder haben:
nun habe ich auch eine Manager Bean, die sich um verschiedene Aufgaben kümmert. Unter anderem auch eine Methode, die alle Projekte zurück gibt:
Das funktioniert auch ohne Probleme soweit. Nun möchte ich aber, dass wenn die Rolle des Aufrufenden USER ist, dass dann nur die Projekte zurück gegeben werden, in denen er auch wirklich mitglied ist. (getCurrentUser() gibt das Userobjekt zum Aufrufenden User zurück)
Das funktioniert so aber nicht. Mein JPA Buch bringt mich nicht mehr weiter und bei google habe ich bisher auch nichts gefunden. Hat jemand einen Tip, wie man das lösen könnte?
liebe Grüße, Soahc
ich habe 2 Entity Beans, User und Projekt. Zwischen beiden besteht eine @ManyToOne Beziehung, denn ein User kann mitglied in beliebig vielen Projekten sein und ein Projekt kann beliebig viele Mitglieder haben:
Java:
@Entity
public class Project {
...
@ManyToMany(cascade = CascadeType.PERSIST, fetch=FetchType.EAGER)
@JoinTable(name="ProjectMembers", joinColumns={@JoinColumn(name="project_id")}, inverseJoinColumns={@JoinColumn(name="member_id")})
private Set<User> userlist = new HashSet<User>();
....
}
nun habe ich auch eine Manager Bean, die sich um verschiedene Aufgaben kümmert. Unter anderem auch eine Methode, die alle Projekte zurück gibt:
Java:
@Override
@RolesAllowed({"ADMIN","USER","PROJECTCREATOR"})
public List<Project> getAllProjects() {
DetachedCriteria criteria = DetachedCriteria.forClass(Project.class);
final List projectlist = getEntityDAO().findEntitys(criteria);
return (List<Project>) projectlist;
}
Das funktioniert auch ohne Probleme soweit. Nun möchte ich aber, dass wenn die Rolle des Aufrufenden USER ist, dass dann nur die Projekte zurück gegeben werden, in denen er auch wirklich mitglied ist. (getCurrentUser() gibt das Userobjekt zum Aufrufenden User zurück)
Java:
@Override
@RolesAllowed({"ADMIN","USER","PROJECTCREATOR"})
public List<Project> getAllProjects() {
DetachedCriteria criteria = DetachedCriteria.forClass(Project.class);
if (context.isCallerInRole("USER")){
criteria = criteria.createAlias("userlist", "user").add(Restrictions.eq("user", getCurrentUser()));
}
final List projectlist = getEntityDAO().findEntitys(criteria);
return (List<Project>) projectlist;
}
Das funktioniert so aber nicht. Mein JPA Buch bringt mich nicht mehr weiter und bei google habe ich bisher auch nichts gefunden. Hat jemand einen Tip, wie man das lösen könnte?
liebe Grüße, Soahc