Solrの検索結果は、エンティティ・クラスを転送し、2つの方法がSolrのを使用して結合アッセイspringbootオブジェクト

質問:私たちが望むエンティティクラスのオブジェクト、非常に一般的なシナリオに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 }

 

おすすめ

転載: www.cnblogs.com/xiaostudy/p/11105277.html