![](/img/trans.png)
[英]Is it possible to get the SQL alias of a join table for a Hibernate sqlRestriction?
[英]Is it possible to get the SQL alias of a join table for a Order by using Hibernate criteria?
我有這種查詢
Critetria criteria = session.createCriteria(Perosn.class,"person");
criteria.createAlias("person.cityInformation","city",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("city.streetInformation","street",JoinType.LEFT_OUTER_JOIN);
criteria.add(new NativeSQLOrder("field({alias}.id,3,2,1)",true)));
NativeSQLOrder.java
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.annotations.common.util.StringHelper;
import org.hibernate.criterion.CriteriaQuery;
import org.hibernate.criterion.Order;
public class NativeSQLOrder extends Order
{
private static final long serialVersionUID = 1L;
private final static String PROPERTY_NAME = "uselessAnyways";
private boolean ascending;
private String sql;
protected NativeSQLOrder(String sql, boolean ascending)
{
super(PROPERTY_NAME, ascending);
this.sql = sql;
this.ascending = ascending;
}
@Override
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException
{
StringBuilder fragment = new StringBuilder();
fragment.append("(");
fragment.append(sql);
fragment.append(")");
fragment.append(ascending ? " asc" : " desc");
return StringHelper.replace(sql, "{alias}", criteriaQuery.getSQLAlias(criteria));
}
}
我想按街道字段的ID排序,但使用此方法我得到第一個表Person的別名。有什么辦法可以獲取Street表的別名呢 ?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.