2013-08-21 48 views
1

我有一個簡單的類:查詢H2使用Hibernate

class Song { 
@Id 
@GeneratedValue(generator="increment") 
@GenericGenerator(name="increment", strategy = "increment") 
private long id; 
private String composition; 
private String performer; 
private String version; 
private int length; // Length in seconds 
private int rating; // Rating 

@OneToMany(fetch = FetchType.LAZY, cascade = {CascadeType.ALL}) 
private Set<Source> sources; 
... 
} 

我堅持一些記錄到數據庫H2。 我可以在沒有問題的情況下獲取所有記錄的列表(可以同時計數),但是當我使用「where」子句進行查詢時,我總是會獲得空列表。 這是我曾嘗試查詢:

List<Song> result = (List<Song>) entityManager.createQuery("FROM Song WHERE performer = "artist").getResultList(); 

我嘗試以下查詢的版本,沒有任何運氣:

"SELECT s FROM Song s WHERE s.performer = 'artist'" 
"FROM Song WHERE str(performer) like 'artist'" 

這個問題讓我發瘋了。我覺得我錯過了一些東西。

+1

您是否試過「選擇s從歌曲s where s.performer =:artist」然後,query.setParameter(「artist」,「artist」)? – jmpyle771

回答

0

它的大小寫敏感,你確定數據庫有'藝術家'值沒有尾隨空間或任何東西?

+0

我很確定數據庫表中有「執行者」字段。我通過查看Hibernate「insert」查詢來驗證。 –

+0

這很好。但它是否包含值='藝術家'。它必須是這個值。 –

+0

我確定它確實包含'藝術家'。 –