【发布时间】:2017-04-21 02:23:32
【问题描述】:
我有用户和任务。每个用户可以有多组任务,反之亦然。我将包含在任务“成员”中的用户称为“成员”,但我没有成员实体,它是隐式的,并通过注释 @JoinTable(name = "member"... 声明。代码:
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@ManyToMany
@JoinTable(name = "member", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "task_id"))
private Set<Task> tasks = new HashSet<>();
}
@Entity
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column
private int id;
@ManyToMany(mappedBy = "tasks")
private Set<User> users = new HashSet<>();
private Calendar initialDate;
private Calendar finalDate;
}
我的问题出在 JPQL 查询中,因为我没有 Member 真正的 bean(@Entity 注释和东西)我不能在我的存储库上做任何事情(假设我有和 Member 实体映射一个用户和一个任务) :
FROM User u
WHERE NOT EXISTS
(
FROM Member m WHERE m.task.finalDate >= :inicial AND m.task.finalDate <= :final
AND m.user.id = u.id//Member here is a hipotetical/nonexistent entity
)
有什么方法可以使用 JPQL/HQL 进行此查询,否则我需要回退到本机 sql 查询? 类型
【问题讨论】:
-
显然 JPQL 语句以“SELECT {alias}”开头 ...
-
从未在 HQL 查询上使用过 select,它会解决我的任何问题吗?
-
这意味着您的查询是有效的 JPQL,即标准投诉 JPA。没有它,它们在任何地方都没有用,除了 Hibernate ...
-
啊,明白了。但在这种情况下,我创建了一个假设的 JPQL 查询,因为我没有成员类(@Entity)......并且 Idk 如何在没有这个关联类的情况下编写这个查询。
标签: hibernate jpa hql spring-data-jpa jpql