Tag: hibernate criteria

Hibernate中对所有表的所有查询的通用条件限制

我已经在hibernate中为我的项目编写了很多查询。 现在我的要求已经改变,我在MySql中的所有表中都添加了一个新的列名ACTIVE。 我无权拒绝添加ACTIVE列。 ACTIVE字段可以保存值true或false,我也必须将其添加到条件中。 所以,我一直在想是否有一种方法可以在Hibernate中添加一个标准限制,这对我所做的所有查询都是通用的,而不是为我所做的每个查询都设置标准? 编辑:我想有点误会,对不起,我在打字时很着急。 某些其他用户已将ACTIVE列设置为true或false。 我需要的是一个全局过滤,仅针对我发出的每个查询的ACTIVE列为true的记录。 像这样的东西,但我希望hibernate为我发出的每个查询添加ACTIVE =’true’filter, select name from table where and ACTIVE=’true’ 希望有意义。 感谢致敬, Sunayan Saikia

如何为这个SQL查询编写Hibernate Criteria?

我有一个像这样的查询 询问 SELECT attendance_entry.roll_no,attendance_entry.absent_date,attendance_entry.absent_status,attendance_entry.leave_status,attendance_entry.od_status FROM attendance,attendance_entry WHERE attendance.class_id='”+classId+”‘ && attendance.section_id='”+sectionId+”‘ && attendance_entry.absent_date= STR_TO_DATE(‘”+date+”‘,’%a %b %d %H:%i:%s IST %Y’) GROUP BY attendance_entry.roll_no”; 我需要为Parse Json写标准 我尝试了以下Criteria Criteria cr = getSession().createCriteria(AttendanceEntry.class) .setProjection(Projections.projectionList() .add(Projections.property(“rollno”),”rollno”) .add(Projections.property(“absent”),”absent”) .add(Projections.property(“leave”),”leave”) .add(Projections.property(“od”),”od”) .add(Projections.groupProperty(“rollno”),”rollno”)) .add(Restrictions.eq(“attendance.classYear.id”, classId)) .add(Restrictions.eq(“attendance.section.id”, sectionId)) .add(Restrictions.eq(“absentDate”, date)) .setResultTransformer(Transformers.aliasToBean(AttendanceEntry.class)); return cr.list(); 我有以下错误 错误 could not resolve property: attendance.classYear.id of: com.technofolks.model.AttendanceEntry; nested exception is […]

Hibernate:按示例查询涉及一对多关系

我最近开始使用Criteria API的示例组件进行查询,并遇到了一个奇怪的问题 – 尝试执行搜索时会抛出org.hibernate.QueryException。 我的方案如下: 我有一个类A,它的一个属性有一组B类实例(Set listOfBs)。 这被映射为A中的一对多关系。 我希望在B的示例实例上设置标准查询,例如,使用属性值“somevalue”指定所有B,然后应用该条件以查找在其集合中具有此类B的所有A。 这是我正在使用(或希望)的代码: Criteria aCrit = session.createCriteria(A.class); A aExampleInstance = new A(); Example aExampleCriteria = Example.create(aExampleInstance ); Criteria bCrit = atCrit.createCriteria(“listOfBs”); B bExampleInstance = new B(); bExampleInstance .setProperty(“somevalue”); bCrit.add(Example.create(bExampleInstance )); List results = aCrit.add(aExampleCriteria).list(); 我正在使用XML映射,A正在将它与B的关系映射如下(A.hbm.xml): 我意识到这可能不是正确的方法 – 欢迎任何更好的建议。 在任何情况下,麻烦的是我得到一个例外: org.hibernate.QueryException:无法解析属性:_com of:B 我已经搜索并意识到exception告诉我的是什么。 但是在我的任何类中都没有声明这样的属性名称 – 在我看来,这可能是Hibernate在引擎盖下使用的任何仪器的一部分,以使持久性看起来透明。 我很好奇这是否是一个已知问题,是否有人使用过的解决方法,或者是否有较新版本的解决方案? 我正在使用Hibernate 3.6.6。 […]

命名查询的等效条件查询

我的命名查询看起来像这样,多亏了这里。 @NamedQuery( name=”Cat.favourites”, query=”select c from Usercat as uc inner join uc.cat as c where uc.isFavourtie = true and uc.user = :user”) 而实现的调用看起来像这样: Session session = sessionFactory.getCurrentSession(); Query query = session.getNamedQuery(“Cat.favourites”); query.setEntity(“user”, myCurrentUser); return query.list(); 什么是返回猫列表的等效标准查询?

如何使用Hibernate进行投影分组

我需要查找特定群组中的学生列表,并列出特定地址以及他们所在位置的电话号码。 我的主要问题是我无法检索每个学生的电话号码作为集合。 例如,如果我有student1,student2。 电话1111用于位置1中的student1和电话2222,电话3333用于位置1中的student2,电话444用于位置2中的student2。 可以说我有 Student1 Alex group1 1111 Location1 Street1 Student3 Jack group1 93939 Location2 Street4 Student7 Joe group2 22223 Location4 Street8 Student2 John group1 2222 3333 Location1 Street1 Student2 John group1 4444 Location1 Street2 Student12 Mark group1 4423 Location9 Street9 带数据的示例输出 User asks for all students in group1 and location1 Student1 Alex Street1 […]

如何构建一个动态查询,该查询添加了迄今为止的天数,并使用条件API将该日期与另一个日期进行比较?

我有一张A桌和一张B桌。 JPA entity ,A和B类都有joda.time.datetime Persistent Field分别表示retentionDate和lastmodifiedDate 。 A还有一个类型为int Persistent Field 。 现在我想将add number of a.days到a.retentionDate ,然后使用JPA criteria API将其与b.lastmodifiedDate进行比较。 实体类 @Entity @Table(name = “A”) @Data @JsonInclude(JsonInclude.Include.NON_NULL) @JsonIgnoreProperties(ignoreUnknown = true) @EqualsAndHashCode(of = “id”, callSuper = false) public class A extends AbstractBaseEntity { @Id @GeneratedValue(generator = “uuid”) @GenericGenerator(name = “uuid”, strategy = “uuid2”) @Column(unique = true, length = […]

忽略In-Criterion

我想用一个带有Hibernate Criteria API的In-Criterion来选择不区分大小写的项目。 例如 Criteria crit = session.createCriteria(Item.class); crit.add(Restrictions.in(“prop”, valueList).ignoreCase()); 不幸的是,Criterion类没有ignoreCase方法。 HQL不是替代品。

在hibernate条件查询中选择“group by”的“all columns”

我想使用“group by”编写条件查询,并希望返回所有列。 Plane sql是这样的: select * from Tab group by client_name order by creation_time; 我知道它将具有count(distinct client_name)行数。 我当前的查询似乎没有给出正确的结果如下: Criteria criteria = getSession(requestType).createCriteria(Tab.class); criteria.setProjection(Projections.projectionList().add(Projections.groupProperty(“client_name”))); criteria.addOrder(Order.asc(“creationTime”)); 此查询仅返回”client_name” 。 我不想手动输入所有列名。 必须有某种方式,可以做些什么?

用于3个表之间连接的Hibernate查询条件

我有一个SQL查询: select * from A INNER JOIN B ON A.id = B.id INNER JOIN C ON B.id = C.id INNER JOIN D ON C.id = D.id where D.name = ‘XYZ’ and D.Sex = ‘M’ 我一直试图为上面的sql提供hibernate查询条件,但是遇到了问题。 任何人都可以帮忙吗?

如何将JPA中的自定义函数转换为谓词?

我有一个自定义的函数实现(接口SQLFunction ),如下所示: public class FilterFunction implements SQLFunction { @Override public boolean hasArguments() { return true; } @Override public boolean hasParenthesesIfNoArguments() { return false; } @Override public Type getReturnType(Type firstArgumentType, Mapping mapping) throws QueryException { return StandardBasicTypes.STRING; } @Override public String render(Type firstArgumentType, List arguments, SessionFactoryImplementor factory) throws QueryException { return arguments.get(0).toString(); } } 所以它只需要一个参数并用它替换函数。 SQL可能如下所示: […]