我在query.getResultList()
处遇到了标题错误;在运行本机查询以返回json对象时在JsonbHibernateExampleApplicationTests
类文件上。
返回非json
类型的列没有问题。
如果需要更多信息,请提供帮助并告诉我。
以下是源代码
public class JsonbHibernateExampleApplicationTests {
@Autowired
private PersonRepository repository;
@Autowired
private ApplicationContext appContext;
@Test
public void contextLoads() {
EntityManagerFactory entityManagerFactory = (EntityManagerFactory) appContext
.getBean("entityManagerFactory");
EntityManager entityManager = entityManagerFactory.createEntityManager();
String sql = "select additional_data from person";
javax.persistence.Query query = entityManager.createNativeQuery(sql);
query.getResultList();
//List<JsonDataUserType> list = (List<JsonDataUserType>) query.getResultList();
/* System.out.println("list:" + list);
for (JsonDataUserType json: list)
{
System.out.println("json:" + json);
}*/
//List<Object[]> objects = query.getResultList();
//System.out.println("result:"+ objects);
}
}
我在实体
中将additional_data列指定为自定义json类型@Type(type = "JsonDataUserType")
private Map<String, String> additionalData;
我无法粘贴所有源代码,您可以在http://vojtechruzicka.com/postgresqls-jsonb-type-mapping-using-hibernate/
查看完整的源代码我刚刚将原始源修改为上面的URL以运行本机SQL查询。
非常感谢,
答案 0 :(得分:1)
我找到了替代解决方案。我将additional_data
json数据转换为文本。
这样我就可以得到输出了。
请参见下面的代码。
请让我知道你们是否有更好的解决方案。可能是POJO映射。
String sql = "select CAST(additional_data AS text) from person";
javax.persistence.Query query = entityManager.createNativeQuery(sql);
List list = query.getResultList(); System.out.println("list:" + list);
System.out.println("list 0:" + list.get(0))