2017-02-27 76 views
0

我使用Spring-Data-Solr,我有三个表并尝试从这些表中获取所有数据。这是表的关系:如何从Solr的数据配置中的多表中获取数据

车表:

 ID, NAME, PRICE, DISTRICT_ID(FK), CITY_ID(FK) 

区表:

 ID(PK), DISTRICT_NAME 

市表:

 ID(PK), CITY_NAME 
数据-config.xml中

我尝试让所有数据和汽车表中的记录与SQL以下为:

<dataConfig> 
<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:/temp/example/ex" user="sa" /> 
<document> 
    <entity name="city" query="select * from city"> 
     <field column="id" name="city_id" /> 
     <field column="name" name="city_name" /> 

     <entity name="cars" query="select * from cars where city_id='${city.id}'"> 
       <field column="id" name="id" /> 
       <field column="name" name="name" /> 
      <entity name="district" query="select * from district where id = '${cars.district_id}'"> 
       <field column="id" name="district_id" /> 
       <field column="name" name="district_name" /> 
      </entity> 
     </entity> 
    </entity> 
</document> 

当我执行的Solr管理我刚刚收到2条记录,但在我的车表有11条记录。

如何获取车表中的所有(11条记录)?感谢

+0

<实体名称= “区” 查询=“SELECT *来自id ='$ {cars.district_id}'“>>的地区应该有cars.id ...或cars.district_id? –

+0

嗨,@AbhijitBashetti:谢谢,你能告诉我更多的细节吗? –

+1

它为你工作?你想分享什么细节?而不是mutilple查询你可以有一个单一的查询加入... –

回答

0
<dataConfig> 
<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:/temp/example/ex" user="sa" /> 
<document> 
<entity name="city" query="select City.city_id ,City.city_name ,car.id ,car.name ,District.id from Car join City on city.id = car.CITY_ID join District on car.DISTRICT_ID = District.id "> 
    <field column="cityid" name="City.city_id" /> 
    <field column="cityname" name="City.city_name" /> 
    <field column="carid" name="car.id" /> 
    <field column="carname" name="car.name" /> 
    <field column="Districtid" name="District.id" /> 
    <etc... any column you need> 


</entity> 
</document> 

编辑

或者你可以考虑做查询[TempView] 和配置将

<entity name="city" query="select * from TempView "> 
    <field column="cityid" name="City.city_id" /> 
    <field column="cityname" name="City.city_name" /> 
    <field column="carid" name="car.id" /> 
    <field column="carname" name="car.name" /> 
    <field column="Districtid" name="District.id" /> 
    <etc... any column you need> 


</entity> 
</document> 
相关问题