java - 如何使用内连接按页面请求排序

标签 java sql spring jpa

我有两个具有多对一关系的表。我想按请求参数定义的 ASC 或 DESC 方向按“地址”表中的“街道”列对“用户”表中的数据进行排序:

localhost:8080/getUsers?sort=address,desc

当我执行sql脚本时:

SELECT * FROM user INNER JOIN address ON user.address_id=address.id ORDER BY street DESC

在工作台或 phpMyAdmin 中它运行良好。所有数据均按街道名称排序;

但是当我尝试通过 postman 获取它时:

getUsers?sort=address,desc

我在控制台输出中遇到此错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'INNER.address' in 'order clause'

问题出在哪里?

@Table(name = "user")
public class User {
    private Long id;
    private String name;
    @ManyToOne()
    @JoinColumn(name = "address_id")
    private Address address;
}

@Table(name = "address")
public class Address {
    private Long id;
    private String street
    @OneToMany(mappedBy = "address")
    private List<User> user;
}

public interface UserRepository extends JpaRepository<User, Long> {

     @Query(value = "SELECT * FROM user INNER JOIN address ON user.address_id=address.id",
        countQuery = "SELECT * FROM contact_messages INNER JOIN contact_topics ON contact_messages.contact_topic_id=contact_topics.id",
        nativeQuery = true)
     Page<User> findAll(Pageable pageable); 
}

此外,当我在存储库中编写这样的查询时,它的工作效果与在工作台中一样好:

@Query(value = "SELECT * FROM user INNER JOIN address ON user.address_id=address.id ORDER BY address DESC",
        countQuery = "SELECT * FROM contact_messages INNER JOIN contact_topics ON contact_messages.contact_topic_id=contact_topics.id ORDER BY address DESC",
        nativeQuery = true)

但我想在需要时控制请求和排序数据(使用排序参数)。

最佳答案

尝试将 SQL 替换为 SELECT u, a FROM user u INNER JOIN u.address a ORDER BY street DESC

关于java - 如何使用内连接按页面请求排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57857619/

相关文章:

sql - 连接多列

java - 如何在Spring RestTemplate中实现批处理

java - Installanywhere 以实现国际化

java - 更新的信息没有反射(reflect)在mysql数据库中

java - JDBC CallableStatement 存储过程 CURSOR 结果集获取

java - 如何在事件分派(dispatch)线程中等待任务完成然后继续?

MySQL批量更新

sql - 在 SQL Server 存储过程中搜索文本

java - Birt 连接配置文件的 ODA 配置文件存储路径

在构造函数中使用@ConfigurationProperties 和@Value 的Spring 前缀