ObjectDB выберите, где запрос
Я пытаюсь выбрать какой-то экземпляр, используя предложение where
public static List<RSSItem> getRSSItem(int x1, int x2) {
EntityManagerFactory emf = DBHandler.getEmf();
EntityManager em = DBHandler.getEm(emf);
String query =
"SELECT items FROM RSSItem items "
+ "WHERE items.id <= :x1 AND "
+ "items.id >= :x2";
List<RSSItem> results =
(List<RSSItem>) em.createQuery(query).
setParameter("x1", x1).
setParameter("x2", x2).
getResultList();
return results;
}
атрибуты RSSItem:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
String title;
String link;
String description;
String pubdate;
String content;
HashMap<String, Integer> keyword = new HashMap();
HashMap<String, Integer> keywordBefore = new HashMap();
// TreeMap <String, Integer> keyword = new TreeMap();
String feed;
проблема в том, что он всегда возвращает список с размером 0. что не так с моим запросом выбора?
1 ответ
Решение
Со значениями x1 = 1
а также x2 = 500
запрос превращается в...
SELECT items FROM RSSItem items
WHERE items.id <= 1
AND items.id >= 500
Так как никакие идентификаторы не являются less or equal to 1
а также greater or equal to 500
в то же время запрос не даст результатов. То, что вы хотите, вероятно;
String query =
"SELECT items FROM RSSItem items "
+ "WHERE items.id >= :x1 AND "
+ "items.id <= :x2";
... который в данных вашего примера найдет все идентификаторы от 1 до 500 включительно.