gpt4 book ai didi

java - JDBC 类型 : 1111 (Native Query) 没有方言映射

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:34:16 24 4
gpt4 key购买 nike

根据标题,我在 query.getResultList() 遇到错误;在运行 native 查询以返回 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 以运行 native SQL 查询。

非常感谢,

最佳答案

我找到了替代解决方案。我将 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))

关于java - JDBC 类型 : 1111 (Native Query) 没有方言映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46441990/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com