그래서 Users 테이블, Projects 테이블 및 User_Roles 테이블이 있습니다. 나는 2 명의 프로젝트에 연결된 하나의 사용자를 가지고 있지만, 나는 그에게 2 개의 프로젝트를 반환하지만, 그를 위해 2 개의 역할을한다면 4 개의 역할 (2x2 프로젝트)을 반환한다. 어떻게이다른 테이블에 중복 된 값이 있기 때문에 Hibernate가 중복을 반환합니다.
이 사용자 클래스에서 사용자에 대한
@Override
public List<Project> retrieve(User user) {
Criteria criteria = super.createCriteria();
criteria.addOrder(Order.desc("date"));
criteria.createCriteria("users").add(Restrictions.eq("id", user.getId()));
return (List<Project>) criteria.list();
}
매핑 프로젝트 목록을 반환하는 내 코드
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "Users_Projects",
joinColumns = @JoinColumn(name = "UserID"), inverseJoinColumns = @JoinColumn(name = "ProjectID"))
public List<Project> getProjects() {
return projects;
}
@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
@Column(name = "RoleType")
@JoinTable(name = "User_Roles", joinColumns = @JoinColumn(name = "UserID"))
public Set<Role> getRoles() {
return roles;
}
어떤 제안 문제가 여기에 무엇됩니다 방지합니까?
TNX는
감사합니다. 매력처럼 작동하지만, 왜 역할로드로 인해이 문제가 발생하는지 설명 할 수 있습니까? 나는 또한 이것이 사실이라고 확신하지만, 왜 사용자 - 프로젝트의 연결 부분이 아닌 무언가를 설정하면이 문제가 발생합니다. 이견있는 사람? –
귀하의 의견에 조금 더 질문에 대한 내 업데이 트를 참조하십시오. –