我有2个实体休眠加入使用标准和限制
PayoutHeader.java
@Entity
public class PayoutHeader extends GenericDomain implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column
private Integer month;
@Column
private Integer year;
@OneToOne
private Bank bank;
@Column
private Double tdsPercentage;
@Temporal(javax.persistence.TemporalType.DATE)
private Date **chequeIssuedDate**;
@Temporal(javax.persistence.TemporalType.DATE)
private Date entryDate;
}
PayoutDetails的.java
@Entity
public class PayoutDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@ManyToOne
private PayoutHeader payoutHeader;
@Column
private Double amount;
@Column
private String bankName;
@Temporal(javax.persistence.TemporalType.DATE)
private Date clearingDate;
@OneToOne
private Advisor advisor;
@Column
private Long **advisorId**;
}
我想用Hibernate的标准编写查询像
Select pd.* from PayoutDetails pd, PayoutHeader ph where pd.payoutheaderId = ph.id and pd.advisorId = 1 and and ph.chequeIssuedDate BETWEEN STR_TO_DATE('01-01-2011', '%d-%m-%Y') AND STR_TO_DATE('31-12-2011', '%d-%m-%Y') ";
我写这样的查询
public List<PayoutDetails> getPayoutDetails(AdvisorReportForm advisorReportForm) {
Criteria criteria = getSession().createCriteria(PayoutDetails.class);
if (advisorReportForm.getAdvisorId() != null && advisorReportForm.getAdvisorId() > 0) {
criteria.add(Restrictions.eq("advisorId", advisorReportForm.getAdvisorId().toString()));
}
criteria.setFetchMode("PayoutHeader", FetchMode.JOIN)
.add(Restrictions.between("chequeIssuedDate", advisorReportForm.getFromDate(), advisorReportForm.getToDate()));
return criteria.list();
}
不过是给误差
org.hibernate.QueryException:无法解析属性:org.commission.domain:的 chequeIssuedDate。 payout.PayoutDetails
我认为是试图找到chequeIssuedDate
字段在PayoutDetails
,但是这个字段在PayoutHeader
。如何在连接过程中指定别名?
我试过第一个给出的解决方案,它给出的错误为“org.hibernate.QueryException:无法解析属性:payoutHeader:org.commission.domain.payout.PayoutDetails” – 2012-07-16 11:23:31
感谢Don Roby :)第二种方法的工作原理。 – 2012-07-16 11:31:09
当我在选择原因打印生成的SQL时,它具有来自两个表的所有列,我只需要来自PayoutDetails表的列。如何为此设置投影? – 2012-07-16 11:32:10