当前位置: 首页 > 面试题库 >

使用hibernate模式执行本机SQL

晋俊贤
2023-03-14
问题内容

我正在使用,hibernate 4.2.6并且PostgreSQL 9.1 一直在尝试使用hibernate模式执行sql查询。我写过:

Session session = Hibernate.util.HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
String sql = String.format("INSERT INTO products (name,cost) VALUES('%s',%s);", product.getName(), product.getCost());
createSQLQuery(sql);//has no effect. Query doesn't execute.
session.getTransaction().commit();
session.close();

该查询不在数据库中执行。但是如果我写

String sql = String.format("INSERT INTO products (name,cost) VALUES('%s',%s);", product.getName(), product.getCost());
Properties connectionProps = new Properties();
connectionProps.put("user", "postgres");
connectionProps.put("password", "123");
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/solid",connectionProps);
conn.createStatement().execute(sql);

相应的行将添加到表中。为什么hibernate不起作用,但是本机查询和JDBC一起起作用?


问题答案:

这应该对您有帮助。

Session session = Hibernate.util.HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
String sql = String.format("INSERT INTO products (name,cost) VALUES('%s',%s);",product.getName(), product.getCost());
session.createSQLQuery(sql).executeUpdate();
session.getTransaction().commit();
session.close();


 类似资料:
  • 问题内容: 我有一个带有数据库转储的SQL脚本。如何使用Hibernate执行它? 我这样尝试过: 但是它仅在包含单个SQL查询且我需要运行多个插入和其他复杂内容时才有效。 RDBMS:Oracle数据库11g快捷版11.2.0.2.0版-64位生产 问题答案: 用开始结束块包装查询。喜欢

  • 问题内容: 我想知道是否有一种方法可以将“ java.exe”作为后台进程执行(静默模式执行) 例如:java -cp。MyClass arg1 我想将以上语句作为后台进程运行,而无需打开命令窗口 问题答案: 在Windows下,使用代替。请参阅此处的链接,相关位复制在此处: 该命令与相同,除了没有关联的控制台窗口。使用时,你不想要一个命令提示符窗口出现。该发射器将,但是,如果启动由于某种原因失败

  • 有没有可能在不使用DryRun的情况下让Gorm运行SQL?我想运行SQL,如果这SQL错误,我想把它和其他几个信息一起记录在日志中。有什么办法能找回这个被处决的SQL吗?

  • 问题内容: 使用in 时可以执行更新吗?例如: 问题答案: 有一个非常强大的功能,称为: [15.4。DML风格的操作](http://docs.jboss.org/hibernate/orm/4.3/manual/en- US/html/ch15.html#batch-direct) 来自doc的小引用: …但是,Hibernate提供了通过Hibernate查询语言执行批量SQL样式DML语句

  • 问题内容: 我想使用Hibernate Native SQL在数据库中插入记录。代码如下 上面的代码工作正常,我认为这不是最好的方法。如果有的话,请给我另一种可能的方法。谢谢 问题答案: Hibernate具有批处理功能。但是在以上情况下,我使用的是Native SQL,根据我的观察,hibernate批处理对于Native SQL并不是很有效。是的,可以肯定的是它可以避免内存不足错误,但不会提高