Es ist üblich, eine Benutzer-Art von Entität zu haben, wenn Sie ein System haben, auf dem sich ein Benutzer anmelden kann und über eigene Sachen verfügt.
eine Item
Klasse vor:
@Entity
public class Item {
@NotNull
@ManyToOne
private User user; // plus getter + setter
}
Dann erhalten Sie eine Liste der Elemente von einem bestimmten Benutzer:
String query = "SELECT i FROM Item i WHERE i.user = :user";
List<Item> items = entityManager.createQuery(query)
.setParameter("user", user) // where 'user' is the current user
.getResultList;
und ein Beispiel Bean in JSF:
public class ItemsBean implements Serializable {
private User user;
private List<Item> items;
public User getUser() {
if (user == null) {
ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
Principal principal = ctx.getUserPrincipal();
user = ... // load user: username = principal.getName()
}
return user;
}
public List<Item> getItems() {
if (items == null) {
User user = getUser();
List<Item> = ... // load items as shown above
}
return items;
}
}
Dies ist wirklich sehr hilfreich, um loszulegen. Tyvm !! - Noch eine Frage: Wenn ich ein Item persistiere, muss der Benutzer in offently bereits gesetzt sein. Wie stelle ich den Benutzer ein? Oder besser: Wie kann ich den Benutzer bei der Anmeldung speichern? Nehme ich einfach einen @Stateful UserManager und erhalte diesen Benutzer, wenn er ein Element persistiert? – membersound
@membersound Sie können das User-Objekt in der HttpSession speichern oder eine Session-JSF-Bean verwenden. Wenn Sie die Standard-Sicherheitsmechanismen der Servlet-API (Anmeldekonfiguration in der web.xml-Datei) verwenden, können Sie den Benutzernamen wie in meinem Code gezeigt abrufen: 'externalContext.getUserPrincipal(). GetName()' –