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设置和获取方法。