我需要一些帮助。
我有这两张桌子
public class Publication implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idPublication")
private Integer idPublication;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "publication")
private List<Question> questionList;
....
}
Tabla问题
public class Question implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "idQuestion")
private Integer idQuestion;
@Basic(optional = false)
@NotNull
@Size(min = 1, max = 500)
@Column(name = "pregunta")
private String question;
@JoinColumn(name = "publication", referencedColumnName = "idPublication")
@ManyToOne(optional = false)
private Publication publication;
@NotNull
private Boolean activo;
....
}
我需要使用active = true的问题来获取这些出版物。 示例:我有出版物A和出版物B,其中A有5个问题,2个有效,B有6个问题,5个有效。
我尝试做“从出版物p中选择p,问题,其中p.idPublication = que.publication.idPublication和que.activo = 1”但它返回出版物及其所有问题......
我无法找到解决方案
请帮忙
迎接
答案 0 :(得分:0)
您无法完全您想要的东西,因为从JPQL查询返回的实体反映了数据库(或持久性上下文)中的内容。换句话说,当您从JPQL查询中选择一个实体时,您将获得整个实体 - 您无法过滤其关系,因为该实体将不再反映数据库中的内容。
在您的示例中,您实际上是在选择至少有1个有效Publication
的{{1}}。
要解决您的问题,您可以为Question
Map
建立活跃Publication
。像这样:
Question