有没有办法从bean实例生成Insert SQL查询?也许使用Hibernate代码?
例如:
@Table(name = "tbl_a")
class A{
@Column(name = "col_a")
int a;
@Column(name = "col_b")
int b;
}
INSERT INTO tbl_a(col_a,col_b)VALUES(avalue,bvalue)
所以,如果我将为它提供一个具有=“val”且b = 5的A instacne,我将得到:
INSERT INTO tbl_a(col_a,col_b)VALUES('val',5) ??
修改
似乎我不太了解,所以让我解释一下:我知道如何坚持使用Hibernate。我想要的是生成SQL查询本身的实际类。最终将提交给DB的相同查询。但我需要查询字符串。意思是,我需要一个工具(或使用Hibernate的类)来获取一个对象并返回一个包含SQL查询的简单字符串。 (不在日志中)。
我希望现在好多了。
谢谢,Idob
答案 0 :(得分:1)
好的,所以没有工具可以获取一个对象并返回一个包含SQL查询的简单字符串。但是你可以使用查询类的getQueryString()
方法。除运行时参数外,您将获得完整的 HQL字符串。
如果您对 SQL字符串感兴趣,那么您可以在Hibernate的log4j系统上启用 DEBUG ,并使用JDBCAppender或某些自定义Appender来捕获本机SQL。
无论如何,这个选项会让你的应用程序变得非常慢(hibernate会产生很多调试)。
答案 1 :(得分:0)
是的,您可以致电sessionFactory.getCurrentSession().save(new A())
直接插入您的实例。执行的SQL看起来与您描述的类似。您可以通过执行hibernate.show_sql=true