是否有任何一種工具可以讓我們直接對數據庫執行JPQL查詢?我想直接在窗口中輸入JPQL查詢並執行它們。執行JPQL查詢的工具?
當然,它可能需要我做相當多的配置,以便它會知道我的JPA實體等,但我想可以完成...任何人都知道這樣的工具?
謝謝。
是否有任何一種工具可以讓我們直接對數據庫執行JPQL查詢?我想直接在窗口中輸入JPQL查詢並執行它們。執行JPQL查詢的工具?
當然,它可能需要我做相當多的配置,以便它會知道我的JPA實體等,但我想可以完成...任何人都知道這樣的工具?
謝謝。
您是否檢查NetBeans,Eclipse或IntelliJ是否按照您的要求進行了操作?這個應該是可能的(如果你使用Hibernate作爲你的JPA後端)。
直到Eclipse Dali獲得a generic JPQL editor,您可以使用Hibernate Tools。 Hibernate Tools與Dali協同工作,並提供一個使用Hibernate執行查詢的HQL/JPQL查詢編輯器。
另一種方法是使用JPA Query Tool [JQT],一個交互式JPA查詢編輯器和跑步者。它可能更接近您要查找的內容(作爲獨立應用程序運行)。
更新:我刪除工具建議的NetBeans,該項目是無效的,不提供任何內容。
你也有Hibernate Tool套房,這是基於NetBeans的
你是否使用過當前代碼並發現它很有用?最後一次發佈是在2006年,從那時起似乎沒有任何事情發生。 – trafalmadorian 2010-12-08 06:37:11
我想我嘗試了所有的工具和IDE的。
最後,我用的代碼如下位結算...
的queryEditor運行的單元測試。
假設你已經有了UnitTests,你可以避免配置PersistenceContexts,DataSources,Drivers,libraries等等的麻煩...... 它也允許你傳遞Entity實例作爲參數。
完成後,將query-String複製到@NamedParameter定義,並將@Test設置爲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));
}
}
如果在命名查詢中有任何錯誤,它是否會提供特定錯誤或通用「命名查詢中的錯誤」消息? – 2013-01-16 10:57:27
看起來像IntelliJ 10將補充HSQL編輯器與JPQL編輯器。 (假設分支96.xxx是10版)
剛剛安裝了Idea X EAP,實際上它包含一個JPQL編輯器。 http://confluence.jetbrains.net/display/IDEADEV/IDEA+X+EAP – Jan 2010-07-29 22:31:25
我google-fu
想出了一個工作鏈接JPA查詢工具:http://www.f1cd.ru/soft/base/j/jpa_query_tool/jpa_query_tool_06/jqt-0.6b.zip
您可能需要嘗試Vestigo。它是一個支持JDO(JDOQL)和JPA(JPQL)的查詢工具&,可以獨立使用或作爲插件安裝到您的Eclipse IDE中。
看起來很有意思。但應該指出,它似乎是一個商業產品。 – MRalwasser 2012-05-02 10:31:34
從2013年新聞:的NetBeans 7.3將有一個內置的JPQL查詢工具:
https://blogs.oracle.com/geertjan/entry/test_jpql_with_netbeans_ide
看起來的NetBeans可能在7.0可以提供某種支持這種東西。 – Rintoul 2009-10-23 20:02:15