2011-08-15 3 views
0

私はこのようなクラスを持っている:タイプマップの@ElementCollectionに似たクエリを作成するにはどうすればよいですか?

class MyEntity { 
    @ElementCollection 
    Map<String, String> properties; 
} 

私は実体が基準のAPIを使用してlikeクエリに一致するプロパティ値を持っているMyEntityを見つけるしたいと思います。これにより、マップエントリの値についてlikeクエリを作成したいとします。

たとえば、MyEntityクラスの1つに「email」という名前のプロパティがあり、値が「[email protected]」の場合、クエリパラメータ「example%」を持つエンティティを検索するにはどうすればよいですか基準API?

+0

AFAIL Criteria APIは、HQLの 'properties ['email']'と似たものをサポートしていません。 – marc

答えて

0

私は解決策を見つけました。

builder.like(
    root.<MyEntity, String, String>joinMap("properties").value(), "example%"); 

コードの一部は、特性マップの値に対してlike述語を作成します。この場合に使用することができるパスAPIでjoinMap(String)メソッドがあります。 MyEntityのMetaModelを生成した場合、これはおそらくもっと簡単になります。

関連する問題