私はパッケージを使用しており、クラスorg.appfuse.dao.hibernate
内のすべてのメソッドを使用しました。GenericDaoHibernate<T,PK>
これらの方法を見つけました
public List<T> getAll();
public List<T> getAllDistinct();
public List<T> search(String searchTerm);
public T get(PK id);
public boolean exists(PK id);
public T save(T object);
public void remove(T object);
public void remove(PK id);
public List<T> findByNamedQuery(String queryName, Map<String, Object> queryParams);
public void reindex();
public void reindexAll(boolean async);
モデルクラス、サービス、およびメソッドがいくつかあります。
ここで、id 以外のモデル クラスの他のフィールドを使用してオブジェクトのリストを取得したいと考えています (多くのモデル クラスに共通のフィールドがいくつかあります)。すべてのサービスとダオスで同様のメソッドを記述する必要があります。だから私は、一般的なdaoで共通のメソッドを作成することは可能だと考えていました.
以下、試してみましたがだめでした。
public T getbyClientKey(Long clientkey) {
Session sess = getSession();
IdentifierLoadAccess byId = sess.byId(persistentClass);
List<T> entity = (List<T>) byId.load(clientkey);
if (entity == null) {
log.warn("Uh oh, '" + this.persistentClass + "' object with client '" + clientkey + "' not found...");
throw new ObjectRetrievalFailureException(this.persistentClass, clientkey);
}
return entity;
}
これがエラーになることはわかっていました。の戻り値の型はオブジェクトのみであり、Listではないため、 TypeCastingExceptionが表示されました。byId.load(id)
では、どうすればそのようなメソッドを作成できますか? もしそうなら、私はremove()のメソッドも作成できると思います(しかし、それは今は必要ありません。将来的には必要になるかもしれません)。