关于Sort的使用查看该博客:
http://www.cnblogs.com/yanzhenxing/archive/2013/05/17/3083156.html
Sort部分代码:
------------------------------
List<Order> listOrder = new ArrayList<Order>();
listOrder.add(new Order(Direction.DESC,"auth"));
listOrder.add(new Order(Direction.DESC,"lockAccount"));
listOrder.add(new Order(Direction.DESC,"updateTime"));
Sortsort = new Sort(listOrder);
------------------------------
//由于字段lockAccount 属于User的关联表UserInfo , 所以抛出该异常.
//org.springframework.data.mapping.PropertyReferenceException:
//No property lockAccount found for type User!
@Table(name ="user")
public class User extends Validator {
``````
@Getter
@Setter
@OneToOne(targetEntity = UserInfo.class,cascade = CascadeType.ALL, fetch = FetchType.EAGER, optional = false)
@JoinTable(name ="user_user_info",
joinColumns = @JoinColumn(name ="user_id", nullable = false),
inverseJoinColumns =@JoinColumn(name = "user_info_id", nullable = false))
private UserInfo userInfo;
````
}
//解决办法找了很久 (并没有人告诉怎么弄),脑洞一开,就解决了,框架已经考虑过这个问题了.
//这两行代码修改为:
listOrder.add(newOrder(Direction.DESC,"userInfo.auth"));
listOrder.add(newOrder(Direction.DESC,"userInfo.lockAccount"));
生成sql:
select ..***…***…
from user user0_ left
outerjoin user_user_info user0_1_ on user0_.id=user0_1_.user_id
inner join user_info userinfo1_ on user0_1_.user_info_id=userinfo1_.id
where 1=1
order byuserinfo1_.lock_account desc, user0_.update_time desc
limit ?
结论:
1 :在设计实体的已经做好了关联注解
2 :在生成Order的时候 , 使用关联表的 "变量名.字段"
框架在解析Sort的时候 , 就会使用关联表的字段进行排序.
希望能帮助遇到该问题的朋友 , 若有错误请指出 , 谢谢