0

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 のリストを返すことです。選択クエリの何が問題になっていますか?

4

1 に答える 1

2

x1 = 1とを使用するとx2 = 500、クエリは次のようになります...

SELECT items FROM RSSItem items
 WHERE items.id <= 1 
   AND items.id >= 500

同時にID がないため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 までのすべての ID が検出されます。

于 2013-06-17T06:11:48.233 に答える