0
にマッピングされていない私は4つのエンティティと1つの表を結合しており、私はこのようなクエリを作りたい:は表クエリに参加します。表は
コラボレーター:
@Entity
public class Collaborator implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = {CascadeType.MERGE,
CascadeType.DETACH,
CascadeType.REFRESH },
fetch = FetchType.EAGER)
@JoinColumn(name = "UserID", nullable = true)
private User user;
@ManyToOne(cascade = {CascadeType.MERGE,
CascadeType.DETACH,
CascadeType.REFRESH },
fetch = FetchType.EAGER)
@JoinColumn(name = "TaskID", nullable = true)
private Task task;
...}
ユーザー:
@Entity
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToMany(cascade = {CascadeType.MERGE,
CascadeType.DETACH,
CascadeType.REFRESH },
fetch = FetchType.EAGER)
@JoinTable(
name = "users_roles",
joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"),
inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
private Set<Role> roles = new HashSet<>();
OneToMany(mappedBy="user", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>();
...}
役割:
@Entity
public class Role implements Serializable{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name", nullable = false)
private String name;
@JsonIgnore
@ManyToMany(mappedBy = "roles",fetch = FetchType.EAGER)
private Set<User> users;
... }
タスク:
@Entity
public class Task implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "task", fetch = FetchType.EAGER)
private Set<Collaborator> collaborators = new HashSet<>();
...}
私の問題:
が、私は役割によってタスクを取得したいと私はこのクエリを試みた:
@Query("select t from Task as t, Collaborator as c, Role as r, User as u, users_roles as ur "
+ "where c.user = u.id "
+ "and u.id = ur.user_id "
+ "and r.id = ur.role_id "
+ "and r.name = :role "
+ "and c.task = t.id "
+ "and t.done = :done ")
List<Task> getTasksByRoleAndState(@Param("role")String role, @Param("done") boolean done);
を私が得ましたエラー:
users_roles is not mapped
任意の提案は大歓迎です、ありがとう
メッセージに「users_roles」という名前のENTITYはありません。そして? JPQLでは、RELATIONSにJOINを使用します。あなたはクラスを投稿しないので、誰がどのようなJOINを作るべきかを提案することができますか? JPQL!= SQL –
私のクラスはこれに必要ではなく、4つのエンティティと1つのジョイント可能なものがあると言いました(私はmanytomany関係を持っています)。 –
私の1つの問題は多分質問です:どのようにJPQL –