如何将自定义数据绑定到用户? 例如:用户登录>只能看到他自己制作的名单/项目。
我是否必须对实体用户进行objekt,并进一步使其包含带有这些对象的@OneToMany列表? 或者对于这样的事情,最好的方法是什么?
Tyvm!
答案 0 :(得分:0)
如果您拥有一个用户可以登录并拥有自己的东西的系统,那么通常会有一个用户类型的实体。
考虑一个Item
类:
@Entity
public class Item {
@NotNull
@ManyToOne
private User user; // plus getter + setter
}
然后,您将获得特定用户的项目列表:
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;
JSF中的一个示例Bean:
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;
}
}
答案 1 :(得分:0)
您只需向每个实体添加“作者”属性,并仅显示当前用户创建的实体:
List<SomeEntity> entities = session.createCriteria(SomeEntity.class)
.add(Restrictions.eq("author", currentUser)).list();