:sort n/.\{-}: /
标准
@Entity
@Table(name = "test")
public class A {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;
@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = "B_ID")
private List<B> details;
......
}
@Entity
@Table(name = "test1")
public class B {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private int id;
@Column(name = "NAME")
private String name;
......
}
由于有很多匹配的行ID为“1”,我会得到以下结果。但我只需要第一个
结果:
Criteria criteria = session.createCriteria(A.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.add(Restrictions.in(id, list))
List = criteria.list();
尝试获得如下结果:只有第一行而不是test1表中的所有行(B.class)
{
"id":1,
"details":[
{
"name":abc,
},
{
"name":123,
},
{
"name":xyz,
},
}
我正在使用hibernate条件来获取结果。我想限制从连接表中检索的数据(一对多映射)。这可能吗?
请告诉我如何实现这一目标。
答案 0 :(得分:1)
不完全确定你的目标是什么,但是:
1 如果您知道只有结果,请使用:
Entity criteria.uniqueResult();
2 如果您期望很多,您可以订购,然后设置您想要的最佳结果数量(前十个):
criteria.addOrder(Order.asc(/* field*/));
criteria.setFirstResult(0);
criteria.setMaxResults(10);
criteria.list();