当前位置: 首页 > 知识库问答 >
问题:

如何在Spring使用Hibernate从SubQuery中的一对一关系中获取数据

白星海
2023-03-14

我有两个表hesk\u用户,如下所示。

@实体@表(name=“hesk\u users”)公共类UserHesk{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column
private int id;

@OneToOne
@JoinColumn(name="user_id")
private User user;

    set.... get..

}

@实体@表(name=“user”)公共类用户实现可序列化{

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@NotEmpty
@Column
private String firstname;

     @OneToOne(mappedBy="user")
private UserHesk userHesk; 

    set ... get ... 

}

我有Hibernate查询,但它不工作...

            DetachedCriteria detachedCriteria=DetachedCriteria.forClass(UserHesk.class)
    .setProjection(Projections.property("user_id"));

    Criteria criteria=sessionFactory.getCurrentSession().createCriteria(User.class);
    criteria.add(Property.forName("id").notIn(detachedCriteria));
    User user=(User)criteria.list().get(0);
    System.out.println(user.getFirstname());
    System.out.println("Subquery Size "+criteria.list().size());

user_id文件的错误。由于关系,无法获取。

共有1个答案

邓翼
2023-03-14

HQL和条件查询始终使用实体类和属性。永远不要使用基础表和列的名称。UserHesk类没有任何user\u id属性。它具有用户属性。

所以代码应该是

DetachedCriteria detachedCriteria = 
    DetachedCriteria.forClass(UserHesk.class)
                    .setProjection(Projections.property("user.id"));

或者甚至

DetachedCriteria detachedCriteria = 
    DetachedCriteria.forClass(UserHesk.class)
                    .createAlias("user", "u")
                    .setProjection(Projections.property("u.id"));
 类似资料:
  • 我的Go应用程序上有这两个结构 我在前端使用Angular,所以如果我不需要提出两个请求来获得客户然后是地址,这将是非常实用的。 我在这里搜索了,但没有找到一对一关系的示例,有没有办法让这个查询不仅获得客户数据,而且还获得地址?

  • 我知道如何从关系中获得Laravel雄辩的ORM数据:一对一、一对多和多对多。这里没什么大不了的。这个问题是我不知道是否可能的,或者,也许我在学习中逃脱了。 一对多关系的示例: 表“用户” null 表“电话” ID id_user 电话号码 如何在运行时从两个表中获取所有字段 我知道如何使用原始sql查询或查询生成器来获取这些信息,但是有可能通过雄辩的关系来获取它们吗? 提前谢了。

  • 我希望在消费者和政策这两个实体之间建立一对多关系。一个消费者应该有几个政策。 这是我想要的一个消费JSON对象的例子: 这就是我到目前为止所做的: 政策实体 消费者实体 我想没那么难,但我已经试了几个小时了,还是做不到。我刚到Spring,所以如果有人能帮助我,我会非常感激!

  • 我们有一个功能表和一个层次表,一个层次可以有多个功能。所以想要查询并获得输出作为 字节对应于tierID和特征名称列表 设法从一个老帖子中得到了答案 此外,我们想得到一张

  • 问题内容: 我有一对一的关系,但是hibernatetool在生成模式时抱怨。这是显示问题的示例: 人与OtherInfo具有一对一关系: 人是OtherInfo的拥有方。OtherInfo是拥有方,因此person用于在Person中指定属性名称“ otherInfo”。 使用hibernatetool生成数据库架构时出现以下错误: 知道为什么吗?我是在做错什么还是这是Hibernate错误?

  • 我有两个实体,它们之间有一对一的联系。这两个实体都具有复合自然主键。一个实体使用其自然组合键中的1个字段和一个额外列引用另一个实体。我在持久化这些实体方面有问题,Hibernate首先插入引用对象(根据我的理解,这是HallPlacesSchema),因此在插入引用对象之前,我立即得到约束违反错误(Hall)。 在单个会话中,我完全按照该顺序坚持霍尔,然后是霍尔广场化学时,问题就出现了。 当会话刷