Я пытаюсь получить минимальное значение столбца в таблице. Это звучит тривиально, но у меня возникают проблемы (я использую базу данных MySql 5.1 ).
Ситуация немного сложная.
У нас есть интерфейс, который реализован из двух классов.
Каждый из этих двух классов расширен от еще трех классов.
Каждые два из этих трех расширений имеют отображение гибернации (базовые классы также имеют отображение) =>, поэтому мы имеем
Интерфейс, который я реализовал
classA (сопоставленный), расширенный classA1 (сопоставленный), classA2 (сопоставленный),
classA3 (не сопоставленный) classB (сопоставленный), расширенный classB1 (сопоставленный),
classB2 (сопоставленный), classB3 (не сопоставленный)
Вот проблема с примером кода:
Criteria c = getSession().createCriteria(samplesType)
.setProjection(Projections.min("pollingTime"));
List resultList= c.list()`enter code here`;
После выполнения .list () в resultList есть три значения:
Первый ноль, второй ноль, третий содержит правильное минимальное значение, которое я ищу.
Я использовал c.uniqueResult()
, но он "возвращает"
org.hibernate.NonUniqueResultException: запрос не вернул уникальный
результат: 3
Я также пытался использовать hibernate's
createQuery(select min(pollingTime) from tableName).list()
но результат тот же (два нуля и один с правильным результатом).
Я также пытался добавить предопределенный ResultTransformer, чтобы удалить нулевые значения из списка, но мне не удалось.
В качестве обходного пути я могу получить требуемое минимальное значение с помощью SQL-запроса:
createSQLQuery("SELECT MIN(pool_time) FROM tableName")
, который является единственным решением на данный момент.
У вас есть идеи, почему возвращаемый результат неверен?
С уважением,
Niki