Я использую пакет org.appfuse.dao.hibernate
, и я использовал весь метод в классе GenericDaoHibernate<T,PK>
.genericdaohibernate add getbyfield, отличное от id
Я нашел эти методы
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;
}
Я знал, что это будет ошибка. и он показал TypeCastingException, потому что тип возврата byId.load(id)
is объект только, а не Список.
Итак, как я могу создать такой метод? Если так, я думаю, что могу создать метод для remove() также (но это не нужно для меня сейчас, возможно, в будущем).
Что я знаю. Я хочу получить как «Список
Можете ли вы показать мне пример того, как использовать этот метод поиска? , потому что сначала я попробовал этот метод поиска. вместо запроса я передал значение clientkey как String ('mymanagaerclass.search (Long.toString (clientKey), mymanagagerclass.class)') –