java使用Spring boot JPA从mysql数据库获取JSONArray
在我的mysql表中,有一列存储“JSONArray”
这是spring boot项目中模型类的一部分
public class SubQuestions implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "sub_questionId", nullable = false,columnDefinition = "INT(11) UNSIGNED")
private Integer sub_questionId;
private JSONArray answers;
}
模型类已具有空构造函数、包含所有字段的构造函数、getter&;二传手强>
这是我的子问题存储界面
public interface SubQuestionsRepository extends Serializable,JpaRepository<Questions,Integer>{
}
这是我的控制器类的一部分
public class SubQuestionsController implements Serializable{
private SubQuestionsRepository subquestionsrepository;
public SubQuestionsController(SubQuestionsRepository subquestionsrepository) {
super();
this.SubQuestionsRepository = subquestionsrepository;
}
@GetMapping("/getall")
public Collection<SubQuestions> getallnestedques(){
return subquestionsrepository.getactiveques();
}
}
但当我调用“getallnestedques()方法”时,它会给出以下错误
There was an unexpected error (type=Internal Server Error, status=500).
could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
org.springframework.orm.jpa.JpaSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:353)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:255)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMeth
我如何解决这个问题
# 1 楼答案
你能试试下面的解决方案吗
需要将
answers
列声明为Lob
,如下例所示:属性转换器
JSONArrayConverter
在存储到数据库之前将JSONArray
对象转换为String
,并在从数据库读取值之后转换为JSONArray
: