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

通过示例和投影进行休眠查询

姜淇
2023-03-14
问题内容

简而言之:hibernate状态不支持投影和示例查询吗?我发现了这篇文章:

代码是这样的:

User usr = new User();
usr.setCity = 'TEST';
getCurrentSession().createCriteria(User.class)
.setProjection( Projections.distinct( Projections.projectionList()
.add( Projections.property("name"), "name")
.add( Projections.property("city"), "city")))
.add( Example.create(usr))

就像其他张贴者所说的那样,生成的sql始终具有一个where类,仅 引用y0_ =? 而不是this_.city

我已经尝试了几种方法,并搜索了问题跟踪器,但对此一无所获。

我什至尝试使用Projection别名和Transformers,但是它不起作用:

User usr = new User();
usr.setCity = 'TEST';
getCurrentSession().createCriteria(User.class)
.setProjection( Projections.distinct( Projections.projectionList()
.add( Projections.property("name"), "name")
.add( Projections.property("city"), "city")))
.add( Example.create(usr)).setResultTransformer(Transformers.aliasToBean(User.class));

有没有人通过示例使用投影和查询?


问题答案:

我可以看到您的用户类别吗?这只是使用下面的限制。我不明白为什么限制与示例之间确实有什么不同(我认为示例中默认情况下会忽略空字段)。

getCurrentSession().createCriteria(User.class)
.setProjection( Projections.distinct( Projections.projectionList()
.add( Projections.property("name"), "name")
.add( Projections.property("city"), "city")))
.add( Restrictions.eq("city", "TEST")))
.setResultTransformer(Transformers.aliasToBean(User.class))
.list();

我从未使用过alaistToBean,但我只是读过它。您也可以循环搜索结果。

List<Object> rows = criteria.list();
for(Object r: rows){
  Object[] row = (Object[]) r;
  Type t = ((<Type>) row[0]);
}

如果需要,您可以自己手动填充用户

如果没有更多信息来诊断问题,很难调查问题。



 类似资料:
  • 问题内容: 有人可以告诉我为什么出现以下错误吗? 我得到期望的结果,并用数据填充 人员 表,但出现此错误。 这是我正在使用的代码: Person.java 地址.java hibernate.cfg.xml 客户端程序 有人可以帮助我了解我为什么会收到该错误吗? 谢谢。 问题答案: 我猜这是由于您在中指定了属性造成的,因此Hibernate尝试以该名称绑定到JNDI,但是JNDI在您的环境中不可用

  • 问题内容: 我对HQL查询和hibernate有疑问。 我有一个用户类和一个角色类。用户可以具有许多角色。所以我有一个像这样的ManyToMany关系: 在用户类别中: 在角色类中: 此映射创建了存储关系的第三个表(PORTAIL_USERROLE)。像这样一切正常。当我有一个用户时,我将检索角色。 但是,我的问题是:在HQL查询中,如何获得具有特定角色的所有用户?任何类都代表PORTAIL_US

  • 问题内容: 我在Hibernate(版本3.2.5)中很难将此查询(可直接在数据库上使用)表示为条件查询: 到目前为止,这是我要解决的问题,它不起作用,并引发错误消息: 这是Netbeans 6.8直接从数据库生成的相关参考配置: FtpStatus.hbm.xml- Connections.hbm.xml- 我知道我丢失了一些东西,但是我对hibernate状态的谷歌搜索还没有发现它。或者,直接

  • 问题内容: 我一直在努力寻找可以通过JPA中的方法调用设置的所有提示的权威资源,但我的想法是空的。有人知道很好的参考吗? 问题答案: 请参阅“ 3.4.1.7。查询提示” 。

  • 问题内容: 我想问一下是否有可能使用hibernate方式做到这一点。假设我已经运行了HQL并检索了一个集合。是否可以使用hibernate进一步过滤它? 我试图在标头类中使用,并在查询之前添加session.enable(),但似乎无法正常工作。 样例代码 精简HQL 问题答案: 不。至少不是您问的方式。一旦您要求Hibernate(使用方法)访问数据库,Hibernate就发挥了作用,结果现在

  • 问题内容: 我很难获得标准表达式的结果相关实体对象的列表。我有两个具有多对多关系的对象,例如ObjectA <-> ObjectB,其中ObjectA的单个实例可以绑定到ObjectB的多个实例,而ObjectB的实例可以绑定到ObjectA的多个实例。该关系存储在您的典型联接表中,但是由于遗留原因,对象模型是这样的,因此ObjectB不直接知道它与ObjectA的关系。我正在尝试创建一个条件表达