我正在努力使用Hibernate Criteria。我的目标是使用Hibernate Criteria创建以下请求:
select
count(*) as y0_
from
PInterface this_
inner join
Product product2_
on this_.product_id=product2_.id
where
this_.product_interface_type_id=?
这是我的代码:
@Entity @Table(name = "PInterface")
public class PInterface {
@Id
@GeneratedValue
@Column(name = "id", nullable = false, insertable = false, updatable = false)
private int id;
@Column(name = "product_id")
private int productId;
@Column(name = "product_interface_type_id")
private int type;
@ManyToOne(optional=false)
@JoinColumn(name = "product_id", referencedColumnName = "id", insertable=false, updatable=false)
private Product product;
}
@Entity @Table(name = "Product")
public class Product {
@Id
@GeneratedValue
@Column(name = "id", nullable = false, insertable = false, updatable = false)
private int id;
private String name;
}
//Criteria is :
Object criteria = sessionFactory.getCurrentSession()
.createCriteria(PInterface.class)
.add(Restrictions.eq("type", 1))
.setProjection(Projections.rowCount())
.uniqueResult()
;
然而,结果......
select
count(*) as y0_
from
PInterface this_
where
this_.product_interface_type_id=?
内部加入?
谢谢你的帮助!
答案 0 :(得分:0)
这个怎么样:
Object criteria = sessionFactory.getCurrentSession()
.createCriteria(PInterface.class)
.createCriteria("product")
.createAlias("product", "p")
.add( Restrictions.eqProperty("p.id", "productId") )
.add(Restrictions.eq("type", 1))
.setProjection(Projections.rowCount())
.uniqueResult();