java 如何在 Hibernate createSQLQuery() 中传递多个参数?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17390625/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-01 01:51:08  来源:igfitidea点击:

How do I pass more than one parameter in Hibernate createSQLQuery()?

javamysqlhibernate

提问by ecirp

I am trying to call a Stored Procedure using Hibernate. I can't seem to find how I pass more than one parameter?

我正在尝试使用 Hibernate 调用存储过程。我似乎无法找到如何传递多个参数?

I know with one parameter you can do this:

我知道用一个参数你可以做到这一点:

Session session = HibernateUtil.getSessionFactory().openSession();
...
Query query = session.createSQLQuery("CALL StoredProcedureTest(:parameter)")
.addEntity(DBModel.class)
.setParameter("parameter", parameter);

ArrayList<DBModel> results = query.list();

I notice there is a .setParameters(Object object[], Type[] types)option but can't find many examples of this at all and don't see how this would work.

我注意到有一个.setParameters(Object object[], Type[] types)选项,但根本找不到很多这样的例子,也不知道这是如何工作的。

What do I do if I need more than one parameter? Can I do this in the same way?

如果我需要多个参数怎么办?我可以用同样的方式做到这一点吗?

回答by JB Nizet

Call setParameter another time:

再次调用 setParameter:

Query query = session.createSQLQuery("CALL StoredProcedureTest(:parameter1, :parameter2)")
   .addEntity(DBModel.class)
   .setParameter("parameter1", parameter1)
   .setParameter("parameter2", parameter2);

回答by Avi

You can always continue the line:

您始终可以继续该行:

Query query = session.createSQLQuery("CALL StoredProcedureTest(:parameter, :parameter2)")
.addEntity(DBModel.class)
.setParameter("parameter", parameter).setParameter("parameter2", parameter2);