简体   繁体   English

休眠以执行多个本机sql语句

[英]Hibernate to execute multiple native sql statements

How can I execute Multiple SQL statements in a single sql query using hibernate native sql. 如何使用休眠本机sql在单个sql查询中执行多个SQL语句。

String sql = "SELECT * FROM user; SELECT * FROM product;";
UserVO valueObject = new UserVO();
databaseObject.select(sql, valueObject);

Database Object 数据库对象

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

Use union to form a query which has same returning data (Select EMPLOYEEID as id, EMPLOYEE_NAME as name, "EMPOYEE" as type) UNION (SELECT PRODUCTID as id, Product_NAME as name, "PRODUCT" as type) 使用联合来形成具有相同返回数据的查询(选择EMPLOYEEID作为ID,EMPLOYEE_NAME作为名称,“ EMPOYEE”作为类型)UNION(选择PRODUCTID作为ID,选择Product_NAME作为名称,选择“ PRODUCT”作为类型)

form an Entity to hold it 组建一个实体来持有它

class EntityDetail {
    String id;
    String name;
    String type;
}

I have added an additional column value type to simply identify from which table row is coming from. 我添加了一个附加的列值类型,以简单地标识来自哪个表行。 And yes you will need to form a proper Entity with all valid annotations the above Entity is just for example. 是的,您将需要使用所有有效的注释来形成一个适当的实体,上述实体仅作为示例。

just a lateral approach. 只是横向方法。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM