Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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_Hibernate Criteria - Fatal编程技术网

Java 在不同关系属性中使用带限制的Hibernate条件

Java 在不同关系属性中使用带限制的Hibernate条件,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,因此,我正在开发一个基于JSF2.3Hibernate4.3的类似法庭的应用程序,我正在努力找出如何使用HibernateCriteriaAPI构建给定的查询。其思想是选择经过身份验证的用户所涉及的所有进程 涉及的实体简化如下: User.java @实体 @表(name=“tb\U用户”) 公共类用户实现可序列化{ @身份证 @生成值 私人长id; @许多酮 私人用户律师; /*其他属性、getter、setter*/ } Process.java @实体 @表(name=“tb\U流程”)

因此,我正在开发一个基于JSF2.3Hibernate4.3的类似法庭的应用程序,我正在努力找出如何使用HibernateCriteriaAPI构建给定的查询。其思想是选择经过身份验证的用户所涉及的所有进程

涉及的实体简化如下:

User.java

@实体
@表(name=“tb\U用户”)
公共类用户实现可序列化{
@身份证
@生成值
私人长id;
@许多酮
私人用户律师;
/*其他属性、getter、setter*/
}
Process.java

@实体
@表(name=“tb\U流程”)
公共类进程实现可序列化{
@身份证
@生成值
私人长id;
@许多酮
私人用户法官;
@许多酮
私人用户发起方;
@许多酮
私人用户推广方;
/*其他属性、getter、setter*/
}
在我的bean中,我想列出用户在某个级别(作为法官、当事人或当事人的律师)参与的流程。这是我使用Criateria API所能得到的最接近的结果:

@Named
@请求范围
公共类IndexBean实现了可序列化{
@注入
私有外部上下文外部上下文;
公共列表getprocesss(){
HttpSession HttpSession=(HttpSession)externalContext.getSession(false);
User User=(User)httpSession.getAttribute(“auth”);
Criteria=dao.Criteria(Process.class);
标准。添加(限制)或(
/*1*/Restrictions.eq(“judge.id”,user.getId()),//工作正常
/*2*/Restrictions.eq(“promoterParty.id”,user.getId()),//工作正常
/*3*/Restrictions.eq(“promotedParty.id”,user.getId()),//工作正常
/*4*/Restrictions.eq(“promoterParty.lawyer.id”,user.getId()),//[fail]org.hibernate.QueryException:无法解析属性:promoterParty.lawyer.id of:com.example.model.Process
/*5*/Restrictions.eq(“promotedParty.lawyer.id”,user.getId())/[fail]org.hibernate.QueryException:无法解析属性:promotedParty.lawyer.id of:com.example.model.Process
));
返回条件。list();
}
}
挑战是在关系(4和5)的关系中添加限制,而其他限制单独起作用


有人能帮我弄清楚如何构建这个查询吗?

我做了类似的事情,但似乎工作正常-生成的查询看起来并不是超级干净(我也不期望它):

Criteria=sess.createCriteria(Process.class);
标准
.createAlias(“发起人当事人、律师”、“发起人律师”)
.createAlias(“推广方.律师”,“推广律师”)
.添加(限制)或(
情商限制(“法官id”、“123”),
eq限制(“发起人律师id”,“123”),
限制。eq(“晋升律师id”,“123”)
));
别名是这里的关键,不要担心
123
:)