Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
使用Hibernate条件从多个POJO获取值_Hibernate_Hibernate Criteria - Fatal编程技术网

使用Hibernate条件从多个POJO获取值

使用Hibernate条件从多个POJO获取值,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,表A各栏 Id,Quantity,Name 表B列 Id,Order_Date,A_Id 有人知道如何编写条件查询以从多个表/POJO获取值吗 Select a.*,b.Order_Date from A a,B b where a.Id=b.A_Id Criteria crit = this.getSession().createCriteria(A.class); 所以最终结果必须是这样的Id、数量、名称、A\u Id 我刚刚开始学习Hibernate,我只知道从一个表/POJO获

表A各栏

Id,Quantity,Name
表B列

Id,Order_Date,A_Id
有人知道如何编写条件查询以从多个表/POJO获取值吗

Select a.*,b.Order_Date from A a,B b where a.Id=b.A_Id
 Criteria crit = this.getSession().createCriteria(A.class);
所以最终结果必须是这样的
Id、数量、名称、A\u Id

我刚刚开始学习Hibernate,我只知道从一个表/POJO获取值

Select a.*,b.Order_Date from A a,B b where a.Id=b.A_Id
 Criteria crit = this.getSession().createCriteria(A.class);

有两种方法可以做到这一点,如下所示:

1。返回具有内部联接B的A的POJO。

Criteria criteria = session.createCriteria(A.class);
criteria.setFetchMode("b",FetchMode.JOIN);
criteria.add(Restrictions.eq("id",a.id));
A returnObjA = criteria.uniqueResult();
当您希望拥有整个POJO而不是POJO的几个实体时,可以使用上述方法

2。应用投影:

如果你只想要B的身份证

ProjectionList p1=Projections.projectionList();
p1.add(Projections.property("balias.id"));
Criteria criteria = session.createCriteria(A.class);
criteria.createAlias("b","balias");
criteria.add(Restrictions.eq("id",a.id));
criteria.setProjection(p1);
List<Long> bidList = criteria.listResult();
ProjectionList p1=Projections.ProjectionList();
p1.增加(项目财产(“balias.id”);
条件=session.createCriteria(A.class);
标准。createAlias(“b”、“balias”);
标准。添加(限制。等式(“id”,a.id));
标准:设定投影(p1);
List bidList=criteria.listResult();
此外,为了进一步参考,您可以通过以下链接。

有以下两种方法:

1。返回具有内部联接B的A的POJO。

Criteria criteria = session.createCriteria(A.class);
criteria.setFetchMode("b",FetchMode.JOIN);
criteria.add(Restrictions.eq("id",a.id));
A returnObjA = criteria.uniqueResult();
当您希望拥有整个POJO而不是POJO的几个实体时,可以使用上述方法

2。应用投影:

如果你只想要B的身份证

ProjectionList p1=Projections.projectionList();
p1.add(Projections.property("balias.id"));
Criteria criteria = session.createCriteria(A.class);
criteria.createAlias("b","balias");
criteria.add(Restrictions.eq("id",a.id));
criteria.setProjection(p1);
List<Long> bidList = criteria.listResult();
ProjectionList p1=Projections.ProjectionList();
p1.增加(项目财产(“balias.id”);
条件=session.createCriteria(A.class);
标准。createAlias(“b”、“balias”);
标准。添加(限制。等式(“id”,a.id));
标准:设定投影(p1);
List bidList=criteria.listResult();
此外,为了进一步参考,您可以通过以下链接。

你能告诉我A和B POJO的映射吗?假设表列的值与POJO的值相同。有人想帮助meDear吗?我问的是是否有一对一的映射或其他东西???当然有映射。B是多对一Acan你给我看A和B POJO的映射吗?假设表列的值与POJO的值相同有人想帮助meDear我问的是是否有任何一对一映射或其他东西???当然有映射。B是多对一A