工具来执行JPQL查询?(Tool to Execute JPQL Queries?)

2019-08-31 19:54发布

是否有任何形式的可用工具,使人们对数据库“直接”执行JPQL查询? 我想直接键入JPQL查询到一个窗口,并执行它们。

当然,它可能会需要我做了不少配置,以便它知道有我的JPA实体,等等,但我想这是可以做到...任何人都知道这样的工具吗?

谢谢。

Answer 1:

直到Eclipse的大理得到一个通用的JPQL编辑器,你可以使用Hibernate的工具 。 Hibernate的工具可与大理,并提供了使用Hibernate来执行一个查询HQL / JPQL查询编辑器。

另一种方法是使用JPA查询工具 [JQT],交互式JPA查询编辑器和亚军。 这可能是更接近你要找的东西(作为一个独立的应用程序运行)。

更新:我删除建议的NetBeans工具,该项目是无效的,不提供任何内容。



Answer 2:

从2013年新闻:的NetBeans 7.3将有一个内置的JPQL查询工具:

https://blogs.oracle.com/geertjan/entry/test_jpql_with_netbeans_ide



Answer 3:

我想,我尝试了所有的工具和IDE的。

最后,我决定用下面的代码位...

该queryEditor运行的单元测试。

假设你已经有单元测试,你避免配置PersistenceContexts,数据源,驱动程序,库等的麻烦......还alows你传递实体实例作为参数。

当您完成后,查询字符串复制到@NamedParameter定义和设置@Test启用=假。

import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;

import javax.persistence.Query;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class TestGeneric extends AbstractModelTest {

    private static final Logger logger = LoggerFactory.getLogger(TestGeneric.class.getName());

    /**
     * This is not a test.  Just a convenience method to edit queries
     */
    @Test(enabled = true)
    public void queryEditor() throws Exception {
        String query = "SELECT mpe " +
                       "  FROM ActiveProduct apt JOIN apt.supportedProduct spt JOIN apt.account act JOIN act.merchantProfile mpe" +
                       " WHERE mpe.id = :mpeId ";
        Class resultClass = MerchantProfile.class;
        Map<String, Object> parameters = new HashMap<String, Object>();
        parameters.put("mpeId", 1L);
        performQuery(query, resultClass, parameters);
    }

    private <T> void performQuery(String jplQuery, Class<T> type, Map parameters) throws Exception {
        Query query = this.em.createQuery(jplQuery, type);

        Set<Map.Entry<String, Object>> rawParameters = parameters.entrySet();
        for (Map.Entry<String, Object> entry : rawParameters) {
            query.setParameter(entry.getKey(), entry.getValue());
        }
        List<T> resultList = query.getResultList();

        if (resultList.size() > 0) {
            int count = 0;
            StringBuffer resultString;
            for (Object o : resultList) {
                resultString = new StringBuffer(++count + " - ");
                dumpObject(o, resultString);
                logger.info(resultString.toString());
            }
        } else {
            logger.info("Empty result list");
        }
    }

    private void dumpObject(Object o, StringBuffer resultString) throws Exception {
        if (o == null) {
            resultString.append("NULL");
        } else if (o instanceof Object[]) {
            Object[] row = (Object[]) o;
            resultString.append("[");
            for (int i = 0; i < row.length; i++) {
                dumpObject(row[i], resultString);
            }
            resultString.append("]");
        } else if (o instanceof Long ||
                   o instanceof Double ||
                   o instanceof String) {
            resultString.append(o.getClass().getName() + ": " + o);
        } else {
            resultString.append(ReflectionToStringBuilder.toString(o, ToStringStyle.SHORT_PREFIX_STYLE));
        }
    }


Answer 4:

看起来像的IntelliJ 10将补充与JPQL编辑器编辑HSQL。 (假设分支96.xxx是版本10)

  • http://youtrack.jetbrains.net/issue/IDEA-55361
  • http://youtrack.jetbrains.net/issue/IDEA-54622


Answer 5:

你可能会想尝试Vestigo 。 这是一个查询工具与浏览器同时支持JDO(JDOQL)和JPA(JPQL),并可以单独使用或安装到Eclipse IDE的插件。



Answer 6:

你检查的NetBeans,Eclipse或者是否的IntelliJ你想要什么?

特别是随着Hibernate的Eclipse插件,这应该是可能的(如果你使用Hibernate作为JPA后端)。



Answer 7:

你也有Hibernate的工具套件,它是基于NetBeans的



Answer 8:

我的google-fu想出了一个工作链接,JPA查询工具 : http://www.f1cd.ru/soft/base/j/jpa_query_tool/jpa_query_tool_06/jqt-0.6b.zip



文章来源: Tool to Execute JPQL Queries?
标签: java jpa jpql