關於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的時候 , 就會使用關聯表的字段進行排序.
希望能幫助遇到該問題的朋友 , 若有錯誤請指出 , 謝謝