使用多个表获取记录

lzfw57am  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(288)

如何使用jpa中的两个表获取记录,两个表之间没有Map。这是一个简单的mysql查询,两个表中只有一列是公共的,即, client_id 作为一个 destination ```
select nc.* from Table1 n, Table2 nc
where n.destination = nc.client_id and n.status = 'Created';

谢谢
efzxgjgh

efzxgjgh1#

尝试使用@query注解编写本机sql查询。您可以在扩展jparepository的接口中编写它
这样地:

> public interface TestRepository extends JPARepository {
>     @Query(value = "select nc.* from Table1 n, Table2 nc where n.destination = nc.client_id and n.status = 'Created'")
>     Collection<SomeClass> findAllClients(); }
7vhp5slm

7vhp5slm2#

与直接查询数据库相比,jpa存储库非常有限(至少从我使用它时看到的情况来看)
您可以使用jdbctemplate直接从controller/where-is发送查询

// Autowiring JdbcTemplate so we can send queries to the database
@Autowired
JdbcTemplate jdbcTemplate;

public List<Map<String, Object>> mock_method() {

// Your query
String query = " select nc.* from Table1 n, Table2 nc
    where n.destination = nc.client_id and n.status = 'Created';";

return jdbcTemplate.queryForList(query);
}

此方法将返回map<string,object>的列表,其中string是列的名称,object是该列的值(这样它可以检索任何类型的数据,然后您可以将其解析为所需的类型)
如果没有与查询匹配的行,它将不返回任何内容,因此不需要进行错误处理。

相关问题