如何使用hibernate native sql在单个sql查询中执行多个SQL语句。
String sql = "SELECT * FROM user; SELECT * FROM product;";
UserVO valueObject = new UserVO();
databaseObject.select(sql, valueObject);
数据库对象
public List select(String sql, Object valueObject) throws Exception {
Session session = Entitlement.getSessionFactory().openSession();
session.beginTransaction();
List list = session.createSQLQuery(sql).setProperties(valueObject).list();
session.close();
return list;
}
答案 0 :(得分:0)
使用union形成具有相同返回数据的查询 (选择EMPLOYEEID作为ID,EMPLOYEE_NAME作为名称,“EMPOYEE”作为类型)UNION(选择PRODUCTID作为ID,Product_NAME作为名称,“PRODUCT”作为类型)
形成一个持有它的实体
<div>
<img src="https://upload.wikimedia.org/wikipedia/it/4/46/Yoda.JPG" alt="Yoda from wikipedia" width=300 height=300>
<ul>
<li><a href="#">Send me an email!</a>
</li>
<li><a href="#">Give me a call!</a>
</li>
</ul>
</div>
我添加了一个额外的列值类型,以简单地识别来自哪个表行。是的,您将需要与所有有效注释形成一个适当的实体,例如上述实体。
答案 1 :(得分:-3)
只是一种横向方法。
public List<List<Object[]>> execute(String sqls, Object valueObject) throws Exception {
String[] queries = sqls.split(";");
List<List<Object[]>> result = new ArrayList<>();
for(int i=0; i<queries.length; i++) {
result.add(this.select(queries[i], valueObject));
}
return result;
}