【发布时间】:2015-06-18 21:35:36
【问题描述】:
我有具有 onetomany 和 manytoone 关系的 Bill 和 Bill_Details。我在获取账单清单方面需要帮助。
波乔
比尔
@OneToMany(cascade={CascadeType.ALL},fetch = FetchType.EAGER)
@JoinColumn(name = "bill_id")
private Set<BillDetails> billDetails = new HashSet<BillDetails>();
账单详情
@ManyToOne(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER)
@JoinColumn(name = "bill_id")
private Bill billId;
我正在使用 Projections 从 List 中获取 Bill 值。
DaoHibernate
@Transactional
public List<Bill> getbillDetailsByBillId(String billId) {
Criteria cr = null;
try {
cr = getSession().createCriteria(Bill.class,"bill")
.createAlias("bill.billDetails","billDetails")
.setProjection(Projections.projectionList()
// I tried .setProjectionProjections.distinct(Projections.projectionList()
.add(Projections.property("billNo"),"billNo")
.add(Projections.property("billDetails.amount"),"billDetails.amount")
.add(Projections.property("billDetails.rate"),"billDetails.rate"))
.add(Restrictions.eq("id", billId))
.setResultTransformer(new AliasToBeanNestedResultTransformer(Bill.class));
} catch (Exception e) {
System.out.println("Get bill DetailsByBillId Error----------"+e);
e.printStackTrace();
}
System.out.println(cr.list().size());
return cr.list();
}
注意:
--> 账单表包含单行
--> BillDetails 表包含此 BillId 的四行
我的条件查询返回四个对象而不是单个对象。我也尝试了独特的功能。
预期输出:
我需要包含 BillDetails 对象(4 个值)的单个对象。 ie.我用下面的示例Json格式解释了
{billNo:231,
billDetails[{amount:100,rate:1}{amount:200,rate:2}
{amount:300,rate:30}{amount:400,rate:4}] }
如何通过 Hibernate criteria Query 得到这个?请帮忙
【问题讨论】:
标签: java hibernate annotations projection hibernate-criteria