こんにちはみんな org.hibernate.Criteria のようなもののラッパーとして機能する単一の Java クラスを開発して、一連の add(Restrictions) をエレガントな方法で取り除くことを試みています。これまでに得たのはレガシーシステムです。
public static void prepareForSelect(Criteria crit) {
crit.add(Restrictions.eq("cid","1"));
crit.add(Restrictions.eq("did","2");
crit.add(Restrictions.eq("fdl","3")); //omit for brevity
}
はい、非常に不適切です。org.hibernate.internal.CriteriaImpl を拡張し、制限する必要があるプロパティを持っている Java クラスを実装しようとしていることを知っています。このクラスには、このようなメソッドがあります。
public org.hibernate.Criteria addStandartsRestrictions(){
return this.add(Restrictions.eq("cid",getCid())).add(Restrictions.eq("did",getDid())).add(Restrictions.eq("fdl",getFdl()));
}
私のJavaコードでは、次のように呼び出します。
org.hibernate.Criteria myOwnCriteria = ((FullCriteria)Session.getSession().createCriteria(MyJava.class)).addStandartsRestrictions();
しかし、次の例外が発生しています
Exception in thread "main" java.lang.ClassCastException: org.hibernate.internal.CriteriaImpl cannot be cast to org.com.utilities.classes.FullCriteria
at javaapplication8.JavaApplication8.main(JavaApplication8.java:12)
たぶん、私にはわからない何か不可能なことです。みんな私を案内してください。
私の間違った実装。
public class FullCriteria extends org.hibernate.internal.CriteriaImpl
{}