这个查询不断地给我带来不同的错误,我怀疑我对构建jpql查询的理解。
请帮我找出它的毛病。
我尝试在直接关联的实体和间接关联的实体之间连接,并在非持久性dto中获得结果。
public List leaveRequestsReport(List employeesGroupIds) {
if(employeesGroupIds!=null && employeesGroupIds.size()==0)
employeesGroupIds =null;
return persistence.getEntityManager().
createQuery("select new com.company.vp.workflow.LeaveRequestRow(at.requestState.request.requestNumber, "
+ "e.employeeNumber, e.fullName, at.requestState.request.submissionDate, e.employeesGroup.name, at.requestState.request.states) " + " from vp$RequestStateAttribute at "
+ " INNER JOIN at.requestState INNER JOIN at.requestState.request , "
+ " vp$Employee e INNER JOIN e.employeesGroup "
+ " where at.requestState.request.subjectType = 10 "
+ " and at.requestState.request.requestKind = 20 " )
.getResultList();
}
我得到的例外
com.haulmont.cuba.core.sys.jpql.JpqlSyntaxException: Errors found for input JPQL:[select new com.company.vp.workflow.LeaveRequestRow(at.requestState.request.requestNumber, e.employeeNumber, e.fullName, at.requestState.request.submissionDate, e.employeesGroup.name, at.requestState.request.states) from vp$RequestStateAttribute at INNER JOIN at.requestState INNER JOIN at.requestState.request , vp$Employee e INNER JOIN e.employeesGroup where at.requestState.request.subjectType = 10 and at.requestState.request.requestKind = 20]
No variable name found [Join variable: null]
No variable name found [Join variable: null]
No variable name found [Join variable: null]
at com.haulmont.cuba.core.global.QueryParserAstBased.getTree(QueryParserAstBased.java:76) ~[cuba-global-7.2.6.jar:7.2.6]
at com.haulmont.cuba.core.global.QueryParserAstBased.getAnalyzer(QueryParserAstBased.java:84) ~[cuba-global-7.2.6.jar:7.2.6]
at com.haulmont.cuba.core.global.QueryParserAstBased.getEntityName(QueryParserAstBased.java:101) ~[cuba-global-7.2.6.jar:7.2.6]
at com.haulmont.cuba.core.sys.QueryImpl.transformQueryString(QueryImpl.java:247) ~[cuba-core-7.2.6.jar:7.2.6]
at com.haulmont.cuba.core.sys.QueryImpl.getQuery(QueryImpl.java:134) ~[cuba-core-7.2.6.jar:7.2.6]
at com.haulmont.cuba.core.sys.QueryImpl.getResultList(QueryImpl.java:409) ~[cuba-core-7.2.6.jar:7.2.6]
实体如下//Map是一个100%正常工作的过程
@Table(name = "VP_REQUEST_STATE")
@Entity(name = "vp$RequestState")
public class RequestState extends BaseUuidEntity implements AttributeHolder {
private static final long serialVersionUID = 6052950589685024134L; @OnDeleteInverse(DeletePolicy.CASCADE)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "REQUEST_ID")
protected Request request;
@Composition
@OneToMany(mappedBy = "requestState")
protected List requestStateAttributes;
// setters and getters go here
}
@Table(name = "VP_REQUEST_STATE_ATTRIBUTE")
@Entity(name = "vp$RequestStateAttribute")
public class RequestStateAttribute extends BaseUuidEntity implements Creatable, ValuedAttributable {
private static final long serialVersionUID = 7406123321282514785L;
@OnDeleteInverse(DeletePolicy.CASCADE)
@NotNull
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "REQUEST_STATE_ID")
protected RequestState requestState;
//other non related attribute and getter and setters go here
}
@Table(name = "VP_REQUEST")
@Entity(name = "vp$Request")
public class Request extends BaseUuidEntity {
private static final long serialVersionUID = 7073994286444570051L;
@Column(name = "REQUEST_NUMBER")
protected String requestNumber;
@Column(name = "REQUEST_KIND")
protected Integer requestKind;
@Column(name = "SUBJECT_TYPE")
protected Integer subjectType;
@Column(name = "SUBJECT_ID")
protected UUID subjectId;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "SUBMISSION_DATE")
protected Date submissionDate;
@Composition
@OneToMany(mappedBy = "request")
protected List states;
//other non related attributes and setters and getters go here.
}
1条答案
按热度按时间sycxhyv71#
这是我做的另一个试验,我得到了一个不同的例外
我得到的例外是