Java Hibernate按内部bean的属性排序?
在我的域模型中,我有以下类:“UserProfile”有一个“SecurityPrincipal”Java Hibernate按内部bean的属性排序?,java,hibernate,criteria,alias,Java,Hibernate,Criteria,Alias,在我的域模型中,我有以下类:“UserProfile”有一个“SecurityPrincipal” class SecurityPrincipal{ private String loginId; private String password; private Date registeredData; private int status; } class UserProfile { private String name; private String company; pr
class SecurityPrincipal{
private String loginId;
private String password;
private Date registeredData;
private int status;
}
class UserProfile {
private String name;
private String company;
private SecurityPrincipa principal
}
我想得到“UserProfile”对象的排序结果,它可以很好地用于简单属性
DetachedCriteria criteria=DetachedCriteria.forClass(UserProfile.class);
criteria.addOrder(Order.asc("name");
但当我尝试访问内部bean(SecurityPrincipal实例)的属性时
Hibernate给出了错误信息:
原因:
org.hibernate.QueryException:可以
不解析属性:
安全性原则状态:
com.bigg.ibmd.usermanagement.model.UserProfile
在
org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
在
org.hibernate.persister.entity.AbstractPropertyMapping.toColumns(AbstractPropertyMapping.java:59)
在
org.hibernate.persister.entity.BasicEntityPropertyMapping.toColumns(BasicEntityPropertyMapping.java:31)
如何按属性对结果排序
谢谢试试这个:
DetachedCriteria criteria=DetachedCriteria.forClass(UserProfile.class);
criteria.createAlias("principal", "p");
criteria.addOrder(Order.asc("p.name"));
我还没有尝试过,也不确定这是最好的方法,但我认为它应该能起作用。要按多个字段进行筛选,应该使用@OrderBy annotation。例如: @OrderBy(“id、name、随便什么”) 私人证券委托人 请注意JPA Criteria api 2.0为集合生成外部联接。这意味着,如果表中没有一对一关系,而是一对多关系,则会获取多个结果: @订购人(“重量、高度”) 私人收藏用户VitalStatsCollection 为了避免重复,可以方便地使用数据库视图
DetachedCriteria criteria=DetachedCriteria.forClass(UserProfile.class);
criteria.createAlias("principal", "p");
criteria.addOrder(Order.asc("p.name"));