2012-10-17 17 views
6

GreenDAOはLIKE演算子の1つの位置をサポートしました。それは私がこの演算子の様々なレコードをフェッチしたい" LIKE ?"なぜGreenDAOはLIKE演算子を完全にサポートしていませんか?

ました。例えば、" LIKE %?"," LIKE ?%"および" LIKE %?%"などである。 GreenDAOではサポートされていません。

また、私はqueryRaw()queryRawCreate()を使用しましたが、残念ながらそれも機能しませんでした。 例えば:

libDocSeriesDao.queryRawCreate( " '?%%' T.Titleのように '?%%' またはT.ViewTitleのように"、aKeyword、 aKeyword).listLazy();

任意の助けいただければ幸いです。

答えて

8

'?'文字を使用すると、 '%'文字をクエリ文字列の一部にすることはできません。キャラクター。パラメータをバインドするときは、%の任意の組み合わせを使用できます。同じ原理は、生のクエリに対して有効です

Query<TestEntity> query = dao.queryBuilder().where(Properties.SimpleString.like("%robot")).build(); 
TestEntity entity2 = query.uniqueOrThrow(); 
assertEquals(entity.getId(), entity2.getId()); 

query.setParameter(0, "green%"); 
entity2 = query.uniqueOrThrow(); 
assertEquals(entity.getId(), entity2.getId()); 

query.setParameter(0, "%enrob%"); 
entity2 = query.uniqueOrThrow(); 
assertEquals(entity.getId(), entity2.getId()); 

:ここ

は、どのようにクエリ(https://github.com/greenrobot/greenDAO/commit/788313904fa58a0c8628f6b2e016a4a385f344c6でgreenDAOのユニットテストから取られた)のような使用方法の例です。たとえば、次のようにします。

libDocSeriesDao.queryRawCreate(" Where T.Title Like ? Or T.ViewTitle Like ?", aKeyword, aKeyword).listLazy(); 

また、aKeywordには%文字が必要です。

+0

ありがとう@greenrobotを説明します。しかし、いくつかのテーブルで作業するためにqueryRawCreate()を記述したい場合、どうすればよいですか?何か解決策があれば、あなたの答えを更新してください。 –

+1

生のクエリ用に更新されました。 –

5

はもっと簡単です:あなたの完全なため

dao.queryBuilder().where(Properties.SimpleName.like(name+"%")).list() 
関連する問題