2012-04-15 6 views
0

に私のギアを動作しません:Hibernateの基準は、SQLiteの

から私のエンティティクラスは

、単純です
@Entity 
@Table(name = "RegistrationRequests") 
public class RegistrationRequest { 

    @Id 
    @GeneratedValue 
    Integer id; 
    String uuid; 
    ... getters and setters ... 
} 

uuidはUUID.randomUUID()。toString()に割り当てられ、正しくデータベースに保持されます。 今、問題は、Hibernate Criteriaを使用して、データベースから格納された要求を取得しようとするときです。

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(RegistrationRequest.class); 
    criteria.add(Restrictions.eq("uuid", '\'' + uuid + '\'')); 
    List requests = criteria.list(); 

は常に(すなわち、一つのレコードがデータベースから選択される)

select 
     this_.id as id2_0_, 
     this_.created as created2_0_, 
     this_.email as email2_0_, 
     this_.isVerified as isVerified2_0_, 
     this_.name as name2_0_, 
     this_.password as password2_0_, 
     this_.surname as surname2_0_, 
     this_.uuid as uuid2_0_ 
    from 
     RegistrationRequests this_ 
    where 
     this_.uuid='ced61d13-f5a7-4c7e-a047-dd6f066d8e67' 

結果が正しい、私は、生成されたSQLを実行ただし場合、空の結果が得られます。

私は一種の困惑していますが、あなたはときにこれ、私の知る限り休止API(私はNHibernateはを使用)について承知していて、where句の値を自分で設定する必要がいけない...ない結果と

+1

を ' '\' '+ UUID + '\'''奇妙に見えます。あなたが 'arround the uuid'なしでuuidを使うとどうなりますか? – andih

答えて

1

をすべてのものを試してみましたwhere句の値を 'myValue'に設定すると、実際にmyValueを検索するために 'myValue'に一致する文字列を検索しています。これに変更

がうまくいけば、それは作業を取得する必要があります

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(RegistrationRequest.class); 
    criteria.add(Restrictions.eq("uuid", uuid)); 
    List requests = criteria.list(); 
+0

SQLiteではハイフン付きのクエリを処理できないため、あまり役に立ちません。そのため、パラメータを引用する必要があります。引用符なしSQLiteは文句を言う: エラー:認識されないトークン: "4c7e" –

+0

上記の条件クエリを持つときに生成されるクエリは何ですか? – Baz1nga

+0

質問は私の投稿とまったく同じですが、uuidの周りには引用符がありません。この文を実行しようとすると、SQLIteは認識できないトークンについて不満を持ちます。 これはSQLite固有の問題かもしれないと思います... –

関連する問題