누구나 NHibernate HQL을 SQL 스크립트로 변환하는 방법을 알고 있습니까?HQL to SQL converter
4
A
답변
2
HQL 변환은 매핑과 런타임 동작에 따라 다르므로 정적으로 그렇게하는 방법은 없을 것 같습니다.
실제 데이터베이스에 대해 HQL을 실행하고 특정 rdbms 또는 NHProf에 대한 프로파일 러를 통해 생성 된 SQL을 캡처 할 수 있습니다.
0
나는 모든 매개 변수에 익숙하지 해요,하지만이 작동하는 것 같다 ...
ISessionFactory sessionFactory = ...
var sf = (SessionFactoryImpl) sessionFactory;
var hql = "from Person";
var qt = sf.Settings.QueryTranslatorFactory.CreateQueryTranslator("", hql, new Dictionary<string, IFilter>(), (ISessionFactoryImplementor) sessionFactory);
qt.Compile(new Dictionary<string, string>(), true);
var sql = qt.SQLString;
Console.WriteLine(sql);
0
나는의 값이 자동 변환 SQL에 HQL 동적으로 무엇인지 확실하지 않다
정확하게 이걸로 무엇을하려고합니까?
가장 쉬운 방법은 SQL Server 프로파일 러를 실행하여 생성 된 SQL을 보는 동안 코드를 실행하는 것입니다. 그러나 더 나은 접근법은 nhProf (www.nhprof.com)를 다운로드하여 코드와 함께 사용하는 것입니다. 당신은 당신의 코드가 SQL에서 출력하고있는 것을 정확히 볼 수있을 것이고 포맷하고 색상을 지정하고 nhibernate의 사용법을 향상시키는 방법에 대한 팁을 줄 것입니다.
private string GetSQL(string hql)
{
using (var iSession = ...)
{
var session = (NHibernate.Engine.ISessionImplementor)iSession;
var sf = (NHibernate.Engine.ISessionFactoryImplementor)iSession.SessionFactory;
var sql = new NHibernate.Engine.Query.HQLStringQueryPlan(hql, true, session.EnabledFilters, sf);
return string.Join(";", sql.SqlStrings);
}
}
0
이는 HQL 쿼리에서 SQL을 얻을 수있는 가장 쉬운 방법이 될 것으로 보인다. 그것은 베타 버전이었습니다. 여기있어! (hql2sql.jsp)
<SCRIPT type="text/javascript">
<%
org.hibernate.Session ThisSession = SessionFactory.getSession();
org.hibernate.engine.SessionImplementor ThisSessionImplementor = (org.hibernate.engine.SessionImplementor) ThisSession;
org.hibernate.engine.SessionFactoryImplementor ThisSessionFactory = (org.hibernate.engine.SessionFactoryImplementor) ThisSession.getSessionFactory();
String HQL_Query = "SELECT ... ";
String SQL_Query;
try{
org.hibernate.engine.query.HQLQueryPlan HQL_Query_Plan = new org.hibernate.engine.query.HQLQueryPlan(HQL_Query, true, ThisSessionImplementor.getEnabledFilters(), ThisSessionFactory);
SQL_Query = org.apache.commons.lang.StringUtils.join(HQL_Query_Plan.getSqlStrings(), ";");
}catch(Exception e){SQL_Query = "ERROR!! :: " + e.getMessage();}
%>
$(document).ready(function(){
$('span[role="HQL"]').text(" <%=HQL_Query%>");
$('span[role="SQL"]').text(" <%=SQL_Query%>");
});
</SCRIPT>
<div style="border:2px solid brown">
Ваш запрос на HQL:
<br/><br/><span role="HQL"> </span>
</div>
<br>
<div style="border:2px solid green">
Ваш запрос на SQL:
<br/><br/><span role="SQL"> </span>
</div>
1
내 오랜 교육 : NHibernate에 3.2
관련 문제
- 1. DBF to SQL Converter
- 2. xls to sql converter 변환기
- 3. Hibernate SQL to HQL
- 4. SQL to HQL 문제
- 5. postgreSQL to MySQL converter
- 6. C to ARM ASM converter
- 7. XLS to pdf converter - 예기치 않은 오류
- 8. HQL vs Linq to objects
- 9. HQL Min Max, how to
- 10. HQL 1 to many count() question
- 11. oracle sql converter jdbc의 CharacterConverter12Byte 문제
- 12. jscript converter
- 13. T-SQL HQL (NHibernate에)에
- 14. ItemsSource + Converter + Treeview 업데이트는
- 15. WPF Databinding Converter .NET
- 16. HQL
- 17. HQL 전환
- 18. Nhibernate HQL SQL Server 2005/2008 CONTAINSTABLE
- 19. wpf converter : 다중 속성 설정
- 20. HQL 쿼리
- 21. Nhibernate HQL
- 22. Linq to Sql - SQL 생성
- 23. LINQ To SQL/SQL CE
- 24. Hibernate HQL 쿼리 생성하기
- 25. Linq to Sql to NHibernate 매핑 옵션
- 26. Linq to SQL - many to many mapping
- 27. Linq to SQL, many to many designs
- 28. Linq to SQL One To Many
- 29. LINQ to SQL 업데이트
- 30. 도움말 Linq to SQL
MYSQL과 NHProf를 사용하고 있습니다. 그러나 DB에 대해 실행할 수없는 SQL을 생성합니다. INSERT INTO 표 1 (Column1, Column2, Column3, Column4, Column5) VALUES (?,?,?,?,?) – ranj
이것은 매개 변수 선언 및 초기화 여야한다는 위의 매개 변수가있는 쿼리입니다. NHprof가 SQL 복사 및 붙여 넣기를 지원합니다. 기타 질문 : http://groups.google.com/group/nhprof –