Hibernate执行多个本机sql语句

时间:2015-09-28 21:46:10

标签: java mysql hibernate

如何使用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;
}

2 个答案:

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