我正在使用 Spring-Data-Solr,我有三个表并尝试从这些表中获取所有数据。这是表的关系:
汽车表:
ID, NAME, PRICE, DISTRICT_ID(FK), CITY_ID(FK)
地区表:
ID(PK), DISTRICT_NAME
城市表:
ID(PK), CITY_NAME
在 data-config.xml 中,我尝试使用以下 sql 获取 Car 表中的所有数据和记录:
<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 Admin 上执行时,我刚刚收到 2 条记录,尽管我的汽车表中有 11 条记录。
如何获取Car表中的全部(11条记录)?谢谢
最佳答案
<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>
编辑
或者您可以在 View [TempView]中进行查询 AND 配置将是
<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>
关于java - Solr数据配置中如何从多表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42482183/