当前位置: 首页 > 面试题库 >

如何使用hibernate条件在String集合中查询具有值的对象?

林弘文
2023-03-14
问题内容

假设Student是继承层次结构中的父类,该继承层次结构包含ComputerScienceStudent和ITStudent。Student定义了一个名为favoriteColors的字段,它是一个值类型的String集合。使用标准API,我想查询所有将“蓝色”列为其最喜欢的颜色之一的学生。

这是相关的Java代码段

@Entity
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
abstract class Student {

    @CollectionOfElements
    Set<String> favoriteColors = new TreeSet<String>();

我查看了http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querycriteria.html上的休眠文档,看起来像这样可能是一个开始

List students = sess.createCriteria(Student.class)
.createCriteria("favoriteColors")
    .add( Restrictions.eq(??????, "blue") )
.list();

但我不知道该属性的名称要填写什么,因为String不是我定义的类(因此??????)

我真的很想避免使用HQL,除非绝对没有办法使用标准来执行此操作。我也想避免添加sqlRestrictions。我认为示例API不会起作用,因为Student是继承层次结构中的抽象父类,并且我无法创建要传递的具体Student作为示例。

这可能吗?谢谢你的时间!


问题答案:

你试过写吗

List students = sess.createCriteria(Student.class)
.add(Restrictions.eq("favoriteColors", "blue") )
.list();


 类似资料:
  • 我有一个实体,包含s的嵌入式集合。 我想找到集合中与给定参数(字符串)匹配的所有s。 我想在JPQL中实现的一些伪代码: 但是,当我尝试此查询时: 它抛出: 我希望避免使用需要连接多个表的解决方案。这是伪代码,但实际查询中充满了大量复杂的大型企业sql where或and语句。所以越少加入越好。

  • 问题内容: 我有以下实体 以下是我的行动 我想获取具有特定操作集的规则列表,我正在尝试执行此操作 但是获取org.hibernate.MappingException:集合不是一个关联:异常。 编辑 因此,在jbrookover的指导下,我尝试为Action命名为RuleAction的包装器类,并能够建立一个oneToMany关系,此外,我还如下修改了查询 但是,这将返回所有具有EMAIL或POS

  • 我有一个表“Quote”,映射在hibernate中,它有一个由整数id和日期组成的复合键,还有几个附加列。我想编写一个条件查询,它使用DetachedCriteria来获取每个id中日期最长的行。 在sql中,我可能会编写一个查询,比如 在hibernate中,我认为可以像这样为“group by”子查询创建DetachedCriteria(其中Quote是映射表的类,“Qid”是键的复合id类

  • 问题内容: SELECT supplier_id FROM suppliers UNION ALL 我只是在查询的“ UNION ALL”子句上方和查询的“ UNION ALL”子句上方创建两个条件。 但是我的问题是我如何在条件中执行UNION ALL子句?提前致谢。 问题答案: 我认为hibernate不支持条件,但是您可以使用两个条件查询来获得预期的结果:

  • 2-查询id为1的人的所有地址,2我想: 好的方法是什么?