我需要在JPA2中转换以下条件,但是发现没有替代方法可以应用没有JDBC参数的用SQL表示的约束

Restrictions.sqlRestriction(“ {alias} .col3&” + value +“ =” + value);

我尝试使用NativeQuery像下面的sinppet一样,其中value是传递给方法的参数:-

String sqlString="select * from myTable where col1=3600 and col2=true and col3&"+value+"="+value;
        Query query=getSession().createNativeQuery(sqlString);
        List<userDefClass> results = new ArrayList<userDefClass>();
        results=(List<userDefClass>)query.getResultList();


对于上述逻辑,我得到以下错误:

“ java.lang.ClassCastException:[Ljava.lang.Object;无法转换为com.pkg.userDefClass java.lang.RuntimeException

query.getResultList()正在传递对象列表,但不传递userdefClass对象列表。

我也尝试使用类型查询,但是它抛出SQL Grammer Exception。我猜它没有解析SQL String中的按位'&'运算符。

请帮忙。

最佳答案

请尝试这个:

query.setResultTransformer(new AliasToBeanResultTransformer(userDefClass.class));

10-08 20:08