2012-05-30 35 views
0

我的代碼是從參數中選擇文本:標題。但是我得到了不正確的結果。在我的例子中,Book類擴展了Media。像SQL中的函數與JPA

這是我的查詢。

String queryStr = "SELECT DISTINCT(b) FROM Book b, Media m WHERE lower(m.title) LIKE :title" 
TypedQuery<Book> query = em.createQuery(queryStr, Book.class); 
if (book.getTitle() != null && book.getTitle() != "") 
      query.setParameter("title", "%" + book.getTitle().toLowerCase() + "%"); 

我的參數是「哈利」。我想只得到1個結果,但我得到了我擁有的所有數據。 我的代碼有什麼錯誤?請幫忙。

+0

我想你忘了加入桌子,或者沒有? 它會返回一切,因爲WHERE子句應該考慮書籍,而不是媒體。你基本上正在做'選擇DISCTINCT(b)從書b.' – nullpotent

+0

嗯......實際上課書延伸媒體。我不認爲我需要加入表格。 – user1412944

回答

1

您應該讓媒體退出查詢。 JPA也知道Book擴展了Media,因此它知道從哪裏獲得媒體部分的書籍。