質問:私たちが望むエンティティクラスのオブジェクト、非常に一般的なシナリオにSolrのターンからの結果を検索することです。
1、@Fieldコメント
@Fieldエンティティ・クラス・フィールドにこのプロパティ注釈[]、例えば、以下
1人の パブリック クラスユーザー{ 2 / ** 3 *番号 4 * / 5 @Field 6 プライベート文字列ID。 7 / ** 8 *用户名 9 * / 10 @Field 11 プライベート文字列のuserName。 12 / ** 13 *密码 14 * / 15 @Field 16 プライベート文字列のパスワード。 17 }
アクセスSolrClient上を参照することができます
springbootは、Solrの結合アッセイを使用し、
変換を使用します
SolrQueryクエリ= 新しいSolrQuery(); query.setQuery( "ID:1")。// 查询内容、ID为1 QueryResponse応答= solrClient.query(クエリ)。 一覧 <ユーザー>豆= response.getBeans(ユーザー。クラス);
図2に示すように、反射
1 SolrQueryクエリ= 新しいSolrQuery()。 2 query.setQuery( "ID:1")。// 查询内容、ID为1 3 QueryResponse応答= solrClient.query(クエリ)。 4つの // 查询结果集 5 SolrDocumentList結果=のresponse.getResults()。 6リスト<ユーザ>リスト= 新しいArrayListを(); 7 のための:(レコードSolrDocumentレコード){ 8 ユーザOBJ = NULL ; 9 トライ{ 10 OBJ =ユーザー。クラス.newInstance(); 11 } キャッチ(ないInstantiationException E1){ 12 e1.printStackTrace()。 13 } キャッチ(IllegalAccessExceptionがe1の){ 14 e1.printStackTrace()。 15 } 16 フィールド[]フィールド=ユーザー。クラス.getDeclaredFields(); 17 用(フィールドフィールド:フィールド){ 18 Object値= record.get(field.getName())。 19 であれば(ヌル == 値){ 20 続けます。 21 } 22 のtry { 23 BeanUtils.setProperty(OBJ、field.getName()、値)。 24 } キャッチ(IllegalAccessExceptionが電子){ 25 e.printStackTrace(); 26 } キャッチ(にInvocationTargetException電子){ 27 e.printStackTrace(); 28 } 29 } 30 であれば(NULL!= OBJ){ 31 list.add(OBJ)。 32 } 33 }