我在Mysql中创建了一个存储过程,并尝试使用J2EE/Hibernate调用该存储过程。在执行存储过程时,其显示me错误。
2018年03月04日上午12:06:18 org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions错误:找不到列“ID”。
执行SP:org.hibernate.exception.sqlgrammareXception时发生错误:无法执行查询
我没有在存储过程中提到id,但它仍然显示关于id的错误。
@Entity
public class User {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String firstName;
private String lastName;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
public List<User> searchUserListWithSP(String firstName,String lastName) {
List<User> userList = new ArrayList<>();
try{
SessionFactory factory = HibernateUtility.getSessionFactory();
Session session = factory.getCurrentSession();
session.beginTransaction();
Query query = session.createSQLQuery("call getUserData(:firstName,:lastName)")
.addEntity(User.class)
.setParameter("firstName", firstName)
.setParameter("lastName", lastName);
userList = query.list();
System.out.println(userList);
} catch(Exception e) {
System.out.println("Error occured while executing SP : "+e);
}
System.out.println("UserDao @searchUserListWithSP -- END");
return userList;
}
getUserData.sql(存储过程)
delimiter //
drop procedure if exists getUserData//
create procedure getUserData(
in firstName varchar(50),
in lastName varchar(50)
)
begin
declare queryString text default "";
set queryString = concat(queryString, 'select u.firstName, u.lastName from user u where 1=1');
if (firstName is not null and firstName != '') then
set queryString = concat(queryString," and firstName like '%", firstName,"%' ");
end if;
if (lastName is not null and lastName != '') then
set queryString = concat(queryString," and lastName like '%", lastName,"%' ");
end if;
set queryString = concat(queryString, ";");
-- select queryString;
SET @SQL := queryString;
prepare stmt from @SQL;
execute stmt;
deallocate prepare stmt;
end//
因此,在从UserDao执行存储过程时,我得到了这个错误。我已经找过了,但没有找到任何具体的东西。如果我在存储过程select语句中添加id,那么它将解决问题,但是对于其他字段显示错误。
请参阅本文,这将有助于理解addEntity()方法的概念
http://www.programering.com/a/mdm0ajmwaty.html
问题内容: 昨晚我刚刚开始学习hibernate,它相当有趣。我在使用hibernate将存储过程作为sql查询调用时遇到麻烦。我已附上来源和错误,请帮助我。谢谢 :) 这是Java文件::: 错误是::: 问题答案: 我基本上不使用hibernate的getNamedQuery重新设计输入,但是java.sql类可以正常工作!
问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’
我有一个在包中定义的存储过程。该过程接受两个参数,一个是游标: 我是这样调用这个过程的: 它将返回以下错误: 你好,阿尼尔班。
问题内容: 我在任何地方都找不到此答案,但是可以从MySQL中的另一个存储过程调用存储过程吗?我想找回标识值,并在父存储过程中使用它。我们不能再使用FUNCTIONS! 问题答案: 参数应该可以帮助您将值返回给调用过程。基于此,解决方案必须是这样的。
我试图在Oracle 11g XE中执行存储包过程调用,但由于某些原因,我得到以下错误: 错误报告-ORA-02291:完整性约束(ROOT。SYS_C007057)违反-未找到父密钥ORA-06512:在"ROOT。BOOKS_STORE",第69行ORA-06512:第2行 *原因:外键值没有匹配的主键值。 *操作:删除外键或添加匹配的主键。 调用以下过程时: 该过程所做的是将数据插入表中。以
我试图调用一个基本的oracle pl/sql存储过程,该过程从表student(姓名、年龄、电子邮件)返回一个字符串。我使用的是命名存储过程注释,但在执行逻辑时出错。谢谢你的帮助。 这就是我犯的错误 错误2864---[nio-8080-exec-1]o.a.c.c.c.[/]。[dispatcherServlet]:Servlet。路径为[]的上下文中servlet[dispatcherSer