【问题标题】:How to get data from multi table in data-config of Solr如何从 Solr 的 data-config 中的多表中获取数据
【发布时间】:2017-02-27 09:35:24
【问题描述】:

我正在使用 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 条记录)?谢谢

【问题讨论】:

  • 应该有cars.id...或cars.district_id?跨度>
  • 嗨,@AbhijitBashetti:谢谢,你能告诉我更多细节吗..
  • 它对你有用吗?你想分享什么细节?您可以使用连接而不是多个查询来进行单个查询...
  • 我使用了 join 并且成功了,谢谢
  • 我应该将其标记/添加为答案吗?

标签: java mysql solr lucene spring-data


【解决方案1】:
<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] 中进行查询 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> 

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多