Sql Spring Boot JPA从返回的查询值映射数组
我需要在一个表上运行一个查询,该表返回一个基于列值的数组 该表如下所示: 查询结果如下所示: 我试图将该数组映射到一个模型类,但它总是抛出JDBC type:2003的Sql Spring Boot JPA从返回的查询值映射数组,sql,spring,hibernate,spring-boot,jpa,Sql,Spring,Hibernate,Spring Boot,Jpa,我需要在一个表上运行一个查询,该表返回一个基于列值的数组 该表如下所示: 查询结果如下所示: 我试图将该数组映射到一个模型类,但它总是抛出JDBC type:2003的方言映射,有什么方法可以做到这一点吗 我的班级: @Entity public class Option { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private int option;
方言映射,有什么方法可以做到这一点吗
我的班级:
@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();
}
我应该如何处理这个问题,因为我有点被困在这一点上:(我试图查找您发布的错误。看起来hibernate很难转换您查询的结果
Hibernate不知道如何将DBMS函数array\u agg
生成的字符串数组转换成现成的字符串数组
考虑实现一个UserType。另一种选择是简单地将此结果映射到字符串。在类中,您可以转换结果
我找到了有关此线程的有用信息:
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;
}
}