我有两个实体
@Entity
public Report()
@Id
@Column(name = "REPORT_ID")
private long id;
@JsonIgnore
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(
name="reports_projects",
joinColumns={@JoinColumn(name="report_id", referencedColumnName="REPORT_ID")},
inverseJoinColumns={@JoinColumn(name="project", referencedColumnName="PROJECT_ID")})
private List<Project> projects;
第二个是:
@Entity(name = "projects")
public class Project
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "PROJECT_ID")
// seems like spring's jpa has issue hanlde "_" between the words
private long id;
@Column(name = "CODE", nullable = false)
private String code;
@Column(name = "DESCRIPTION", nullable = false)
private String description;
@Column(name = "CREATION_DATE", nullable = false)
private Date creationDate;
我正在尝试按项目查询报告。代码尝试了一些类似的东西
@Query("select reports from org.jpp.domain.quicksearch.ReportQS reports inner join reports.projects p where p.code in :code")
和
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<QuickSearchResult> query = cb.createQuery(QuickSearchResult.class);
Metamodel m = em.getMetamodel();
EntityType<ReportQS> ReportQSMetaModel = m.entity(ReportQS.class);
Root<ReportQS> reportsQS = query.from(ReportQS.class);
Root<Project> projects = query.from(Project.class);
Join<ReportQS, Project> joinReportsProjects = reportsQS.join("projects");
Predicate condition = cb.equal(projects.get("code"),"gnrl");
query.select(reportsQS).where(condition);
TypedQuery<QuickSearchResult> q = em.createQuery(query);
我得到两个查询的空结果知道如何让它工作吗?
提前致谢, 橡树