【问题标题】:Spring Boot JPA Mapping an array from a returned query valueSpring Boot JPA 从返回的查询值映射数组
【发布时间】:2018-12-06 17:31:34
【问题描述】:

我需要在一个表上运行一个查询,该表根据列的值返回一个数组。

表格如下所示:

查询结果如下:

我尝试将该数组映射到模型类,但它总是抛出 No Dialect mapping for JDBC type: 2003 有什么方法可以做到这一点吗?

我的课:

@Entity
public class Option {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private int option;

    @ManyToOne
    @JoinColumn(name = "user_id")
    User user;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getOption() {
        return option;
    }

    public void setOption(int option) {
        this.option = option;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }



}

存储库:

@Repository
public interface OptionRepo extends JpaRepository<Option, Integer>{
    @Query(value = "SELECT user_id, array_agg(option) FROM option GROUP BY user_id ORDER BY user_id", nativeQuery = true)
    public List<OptionQuery> getOptions(); 

}

OptionQuery 类:

public class OptionQuery {

    private int user_id;
    private int[] array_agg;

    public int getUser_id() {
        return user_id;
    }

    public void setUser_id(int user_id) {
        this.user_id = user_id;
    }

    public int[] getArray_agg() {
        return array_agg;
    }

    public void setArray_agg(int[] array_agg) {
        this.array_agg = array_agg;
    }
}

我应该如何处理这个问题,因为我有点卡在这一点上:(

【问题讨论】:

    标签: sql spring hibernate spring-boot jpa


    【解决方案1】:

    我试图查找您发布的错误。看起来 hibernate 在尝试转换查询结果时遇到了困难。

    Hibernate 不知道如何开箱即用地转换由 DBMS 函数 array_agg 生成的字符串数组。

    考虑实现一个 UserType。另一种选择是简单地将这个结果映射到字符串。在您的课程中,您可以转换结果。

    我在这个帖子上找到了有用的信息:No Dialect mapping for JDBC type: 2003

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 2020-06-20
      • 2016-12-19
      • 1970-01-01
      相关资源
      最近更新 更多