在JPA中使用Native SQL描述表结构

时间:2015-08-04 17:09:51

标签: java jpa

我正在为我的JPA粗体工作使用h2内存数据库表。现在我想查看创建的表的结构。所以我只写了一个像

这样的简单代码
Query query1 = entityManager.createNativeQuery("show columns from Mobile");

不知道如何打印此结果集。

这样做

System.out.println(query1.getFirstResult());

没有给出预期的输出。

有没有办法看到in-memory数据库中生成的表结构,或者有没有办法以有意义的方式打印数据(比如执行desc tablename时得到的输出?)

2 个答案:

答案 0 :(得分:1)

您正在寻找的是:

Query query1 = em.createNativeQuery("show columns from Mobile");
List<Object[]> results = query1.getResultList();
for (Object[] obj : results) {
    System.out.println("field: " + obj[0]);
    System.out.println("\ttype: " + obj[1]);
    System.out.println("\tnullable: " + obj[2]);
    System.out.println("\tkey: " + obj[3]);
    System.out.println("\tdefault: " + obj[4]);
}

我建议你看一下@SqlResultSetMapping来使这个查询类型安全。

答案 1 :(得分:0)

Query query1 = em.createNativeQuery("show columns from Mobile");
List<Object[]> results = query1.getResultList();
for (Object[] obj : results) {
    System.out.println("field: " + obj[0]);
    System.out.println("\ttype: " + obj[1]);
    System.out.println("\tnullable: " + obj[2]);
    System.out.println("\tkey: " + obj[3]);
    System.out.println("\tdefault: " + obj[4]);
}