Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hibernate中实现多个内部联接_Java_Hibernate_Criteria - Fatal编程技术网

Java 如何在Hibernate中实现多个内部联接

Java 如何在Hibernate中实现多个内部联接,java,hibernate,criteria,Java,Hibernate,Criteria,产品模板、产品帐户、产品样式和产品帐户是表。 mysql命令: select distinct product_template.id as ptid from product_account inner join product on product_account.productId=product.id inner join product_style on product.productStyleId=product_style.id inner join product_templat

产品模板、产品帐户、产品样式和产品帐户是表。 mysql命令:

select distinct product_template.id as ptid from product_account inner join product on product_account.productId=product.id inner join product_style on product.productStyleId=product_style.id inner join product_template on product_style.productTemplateId=product_template.id where product_account.sellerId=1 and product_account.productAccountType=1;
Mysql命令运行良好,但我不知道如何在条件中实现。
我的代码:

criteriac=createCriteria(ProductAccount.class);
ProjectionList ProjectionList=Projections.ProjectionList();
c、 添加(Restrictions.eq(“seller”,query.getSeller());
c、 添加(Restrictions.eq(“productAccountType”,query.getProductAccountType());
c、 createCriteria(“产品”).createCriteria(“产品样式”).createCriteria(“产品模板”);
c、 setProjection(Projections.distinct(Projections.property(“id”));
List objects=c.List();
我只获得product_帐户的id,但我需要product_模板的id。任何人都将不胜感激。提前感谢。

criteriac=createCriteria(ProductAccount.class);
Criteria c = createCriteria(ProductAccount.class);
c.add(Restrictions.eq("seller", query.getSeller()));
c.add(Restrictions.eq("productAccountType", query.getProductAccountType()));
c.createCriteria("product")
    .createCriteria("productStyle")
    .createCriteria("productTemplate", "pt"); //This needs an alias
c.setProjection(Projections.projectionList()
    .add( Projections.distinct( Projections.property("id") ) )
    .add( Projections.property("pt.id") )); //Add it to the projection list
List<Object> objects = c.list();
c、 添加(Restrictions.eq(“seller”,query.getSeller()); c、 添加(Restrictions.eq(“productAccountType”,query.getProductAccountType()); c、 创建标准(“产品”) .createCriteria(“productStyle”) .createCriteria(“产品模板”、“pt”)//这需要一个别名 c、 setProjection(Projections.projectionList()项目) .add(projects.distinct(projects.property(“id”)) .add(Projections.property(“pt.id”))//将其添加到投影列表中 List objects=c.List();
顺便说一句,您的代码是否已经运行了?因为第一个criteria类丢失了

Criteria c = createCriteria();
c.add(Restrictions.eq("seller", query.getSeller()));
c.add(Restrictions.eq("productAccountType", query.getProductAccountType()));
c.createCriteria("product").createCriteria("productStyle").createCriteria("productTemplate", "pt");
c.setProjection(Projections.distinct(Projections.property("pt.id")));
List<Object> objects = c.list();
criteriac=createCriteria();
c、 添加(Restrictions.eq(“seller”,query.getSeller());
c、 添加(Restrictions.eq(“productAccountType”,query.getProductAccountType());
c、 createCriteria(“产品”).createCriteria(“产品样式”).createCriteria(“产品模板”、“pt”);
c、 setProjection(Projections.distinct(Projections.property(“pt.id”)));
List objects=c.List();

您可以发布pojo类实现吗请查看您的
createCriteria
方法实现可能不正确。请把它包括在问题中。
Criteria c = createCriteria();
c.add(Restrictions.eq("seller", query.getSeller()));
c.add(Restrictions.eq("productAccountType", query.getProductAccountType()));
c.createCriteria("product").createCriteria("productStyle").createCriteria("productTemplate", "pt");
c.setProjection(Projections.distinct(Projections.property("pt.id")));
List<Object> objects = c.list();