어떻게 사용자 정의 데이터를 사용자에게 바인드 할 수 있습니까? 예 : 사용자 로그인>은 자신이 만든 목록/항목 만 볼 수 있습니다.사용자에게 사용자 지정 데이터 바인딩?
엔티티 사용자 객체를 만들고이 객체를 사용하여 @OneToMany 목록을 추가해야합니까? 또는 일반적으로 이러한 상황에 가장 적합한 방법은 무엇입니까?
Tyvm!
어떻게 사용자 정의 데이터를 사용자에게 바인드 할 수 있습니까? 예 : 사용자 로그인>은 자신이 만든 목록/항목 만 볼 수 있습니다.사용자에게 사용자 지정 데이터 바인딩?
엔티티 사용자 객체를 만들고이 객체를 사용하여 @OneToMany 목록을 추가해야합니까? 또는 일반적으로 이러한 상황에 가장 적합한 방법은 무엇입니까?
Tyvm!
사용자가 로그인 할 수 있고 자신의 물건이있는 시스템을 사용하는 경우 사용자 유형의 엔티티를 갖는 것이 일반적입니다.
는 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의 :
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;
}
}
당신 각 엔티티에 '작성자'속성을 추가하고 현재 사용자가 만든 엔티티 만 표시 할 수 있습니다.
List<SomeEntity> entities = session.createCriteria(SomeEntity.class)
.add(Restrictions.eq("author", currentUser)).list();
이것은 정말 도움이됩니다. tyvm !! - 한 가지 더 질문 : 항목을 유지할 때 명백한 범위 내의 사용자를 이미 설정해야합니다. 사용자를 어떻게 설정합니까? 또는 오히려 어떻게 로그인을했을 때 사용자를 저장할 수 있습니까? @Stateful UserManager를 사용하고 항목을 유지할 때이 사용자를 검색하나요? – membersound
@membersound HttpSession에 User 객체를 저장하거나 세션 범위가 지정된 JSF 빈을 사용할 수 있습니다. 서블릿 API (web.xml 파일의 로그인 설정)의 표준 보안 메커니즘을 사용한다면, 내 코드에 나와있는 것처럼 사용자 이름을 얻을 수 있습니다 :'externalContext.getUserPrincipal(). getName()' –