将自定义数据绑定到用户?

时间:2012-04-03 18:10:26

标签: java jsf seam

如何将自定义数据绑定到用户? 例如:用户登录>只能看到他自己制作的名单/项目。

我是否必须对实体用户进行objekt,并进一步使其包含带有这些对象的@OneToMany列表? 或者对于这样的事情,最好的方法是什么?

Tyvm!

2 个答案:

答案 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();