生成插入对象

时间:2013-01-16 15:04:48

标签: hibernate jpa

有没有办法从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

2 个答案:

答案 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

打开休眠调试来测试它