query inner example create consultas java jpa jpql
http://www.f1cd.ru/soft/base/j/jpa_query_tool/jpa_query_tool_06/jqt-0.6b.zip

java - inner - jpql order by



Herramienta para ejecutar consultas JPQL? (8)

¿Hay algún tipo de herramienta disponible que permita ejecutar consultas JPQL contra una base de datos "directamente"? Me gustaría escribir consultas JPQL directamente en una ventana y ejecutarlas.

Por supuesto, probablemente me requeriría hacer un poco de configuración para que estuviera al tanto de mis entidades JPA, etc., pero supongo que podría hacerse ... ¿Alguien sabe de una herramienta así?

Gracias.


¿Comprobaste si NetBeans, Eclipse o IntelliJ hacen lo que quieres?

Especialmente con el complemento de Hibernate para Eclipse, esto debería ser posible (si usa Hibernate como su backend JPA).


Creo que probé todas las herramientas y los IDE.

Al final, me conformé con seguir un poco de código ...

El queryEditor se ejecuta como UnitTest.

Suponiendo que ya tiene UnitTests, evita la molestia de configurar PersistenceContexts, DataSources, Drivers, libraries, etc ... También le permite pasar instancias de entidad como parámetros.

Y cuando haya terminado, copie query-String en una definición @NamedParameter y configure @Test para enable = false.

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)); } }


Es posible que desee probar Vestigo . Es una herramienta de búsqueda y navegador compatible con JDO (JDOQL) y JPA (JPQL) y se puede utilizar de forma independiente o instalada en su Eclipse IDE como complemento.


Hasta que Eclipse Dali obtenga un editor JPQL genérico , puede usar Hibernate Tools . Hibernate Tools trabaja con Dali y proporciona un editor de consultas HQL / JPQL que utiliza Hibernate para ejecutar las consultas.

Una alternativa sería usar la herramienta de consulta JPA [JQT], un editor de consulta JPA interactivo y un corredor. Puede estar más cerca de lo que está buscando (se ejecuta como una aplicación independiente).

Actualización: eliminé la herramienta sugerida para NetBeans, el proyecto está inactivo y no proporciona nada.