这是我需要通过当前用户ID获得的项目实体:
@Entity
@Table(name = "project")
public class Project implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany
@JoinTable(name = "project_user",
joinColumns = @JoinColumn(name="projects_id", referencedColumnName="id"),
inverseJoinColumns = @JoinColumn(name="users_id", referencedColumnName="id"))
private Set<User> users = new HashSet<>();
}
这是用户实体,我将使用它来获取产品:
@Entity
@Table(name = "jhi_user")
public class User extends AbstractAuditingEntity implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(mappedBy = "users")
private Set<Project> projects = new HashSet<>();
}
存储库类扩展了JparePository类。我如何获得当前用户ID的所有项目?
我可以使用的本机SQL语句是:
SELECT * FROM project WHERE id IN (SELECT projects_id FROM project_user WHERE users_id = ?);
它应该和这个...
一样简单User user = userRepository.findById(100L);
Set<Projects> projects = user.getProjects();
由于您的映射,JPA会照顾其余的。