「純粋なネイティブ スカラー クエリはまだサポートされていません」という問題に直面しました。パラメータとしてクエリの名前を持つ count クエリを実行する必要があり、クエリの 1 つはネイティブ SQL でなければなりません。偽のエンティティを作成することで克服できました:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
/**
* Simple wrapper entity work around for the limited hibernate pure native query
* support. Where an HQL query is not possible
*/
@SuppressWarnings("serial")
@Entity
public class CountDTO extends Number {
@Id
@Column(name = "COUNT")
private Long count;
@Override
public double doubleValue() {
return count.doubleValue();
}
@Override
public float floatValue() {
return count.floatValue();
}
@Override
public int intValue() {
return count.intValue();
}
@Override
public long longValue() {
return count.longValue();
}
}
それから私は設定しましたresultClass = CountDTO.class
@NamedNativeQueries({
@NamedNativeQuery (name="postIdSecurity",
query="select count(...) ...", resultClass = CountDTO.class)
})
そしてカウントを取得します:
((Number) getEntityManager().createNamedQuery(qryName).
setParameter(...).getSingleResult()).longValue()
クレジット: http://jdevelopment.nl/hibernates-pure-native-scalar-queries-supported/#comment-1533