是否有非商业Hibernate查询检查器?

时间:2011-12-15 12:38:40

标签: java sql hibernate persistence

我们在某个项目的工作场所使用Hibernate,最近我不得不修改一些查询。我发现修改查询,运行ant smartant refresh并查看我的查询是否有效非常麻烦。当我问我的一位同事时,他告诉我这是我们使用它的方式。

您是否知道如何加快这一过程?我正在寻找一个可以连接到数据库的工具(我们正在使用PGSQL)并在那里运行我的Hibernate查询并在不触及ant的情况下显示结果。

例如,我可以试试这个:

@Query(query = "SELECT DISTINCT l FROM Line l, IN(l.workplaces) w WHERE w.workshop.sid=:wsid", params = "wsid")

2 个答案:

答案 0 :(得分:1)

我们有一个junit-test for hibernate,它使用derby database作为内存数据库。这将使用所有表在derby中创建数据库,您应该能够执行查询,以查看它是否有效。

我们在orm.xml中有所有查询,因此在创建EntityManager时已经检查了这些查询。

设置

  private static EntityManagerFactory emf;
  private static EntityManager em;

  @BeforeClass
  public static void before()
  {
    emf = Persistence.createEntityManagerFactory("persistenztest");
    em = emf.createEntityManager();
  }

测试

  @Test public void test()
  {
    Query q = em.createQuery(YOUR_QUERY_HERE);
    List<?> list =  q.getResultList();
  }

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
  xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">

  <persistence-unit name="persistenztest" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <mapping-file>orm.xml</mapping-file>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="create"/>
      <property name="hibernate.connection.driver_class" value="org.apache.derby.jdbc.EmbeddedDriver" />
      <property name="hibernate.connection.url" value="jdbc:derby:memory:sa;create=true;territory=de_DE;collation=TERRITORY_BASED:SECONDARY;"/>

      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
      <property name="hibernate.cache.use_query_cache" value="false"/>
      <property name="hibernate.cglib.use_reflection_optimizer" value="false" />
    </properties>
  </persistence-unit>

</persistence>

答案 1 :(得分:1)

用于eclipse的JBoss Tools有一个HQL编辑器,你可以从hibernate的角度打开它,你可以在那里测试hql查询。

相关问题