0
我已经走了两个实体与双向onetomany关联。我想使用带有投影的标准(仅从少数列中获取数据)获得许多带有许多Adress
的许多Person
。查询结果我想放入List<Map<String, Object>>
。结果列表应该有这样的结构(地址数据应在父地址对象List<Map<String, Object>>
包含):准则,预测,ALIAS_TO_ENTITY_MAP
[
{
name: "Andrew"
surname: "..."
adress : [
{
city : "New York"
street : "..."
type : "home"
}
{
city : "..."
street : "..."
type : "work:
}
]
{
name: "..."
surname : "..."
address : [{....}]
}
]
实体:
public class Person{
private Long id;
private String name;
private String surname;
private Integer age;
private String phoneNr;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "person", fetch = FetchType.LAZY)
private List<Address> addresses
// getters and setters
}
public class Address{
private Long id;
private String city;
private String street;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="person_id")
private Person person;
// getters and setters
}
所有我能做到是加载整个实体,哪些不符合我的需求。
Criteria criteria = currentSession().createCriteria(Person.class);
criteria.setFetchMode("addresses", FetchMode.JOIN);
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
任何建议将是非常有益的。
可以从查询中返回一个List