JDBC类型的无方言映射:1111(本机查询)

时间:2017-09-27 07:34:15

标签: java json

我在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查询。

非常感谢,

1 个答案:

答案 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))