Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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
Mysql 如何在spring中使用Hibernate从子查询中的一对一关系获取数据_Mysql_Spring_Hibernate - Fatal编程技术网

Mysql 如何在spring中使用Hibernate从子查询中的一对一关系获取数据

Mysql 如何在spring中使用Hibernate从子查询中的一对一关系获取数据,mysql,spring,hibernate,Mysql,Spring,Hibernate,我有两个表hesk_用户,用户,如下所示 @实体 @表(name=“hesk_用户”) 公共类UserHesk{ @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column private int id; @OneToOne @JoinColumn(name="user_id") private User user; set.... get.. } @实体 @表(name=“user”) 公共类用户实现可序列化{ @Id @G

我有两个表
hesk_用户
用户
,如下所示

@实体 @表(name=“hesk_用户”) 公共类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\u id
字段出错。由于关系,无法获取。HQL和criteria查询始终使用实体类和属性。永远不要指定基础表和列的名称。UserHesk类没有任何
user\u id
属性。它有一个
user
属性

所以代码应该是

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"));

我不知道使用OneTONE关系生成的colunm用户id的标准。我没有为userId colunm设置和获取方法。