gpt4 book ai didi

java - 用于更新查询的 JPA @Query 注释(oracle sql 开发人员)——org.hibernate.exception.GenericJDBCException : could not execute query

转载 作者:行者123 更新时间:2023-12-05 08:52:58 24 4
gpt4 key购买 nike

我有一个存储库文件共享相同的源代码和一个 Controller 类,通过它我为一个更新语句调用 @query 函数。我想将一列数据更新到我的 Oracle 数据库中,为此我编写了 JPA update @query 并将该函数定义到一个存储库文件中,因此从我的 Controller 类之一进行调用无法执行查询。

存储库文件

package com.sid.demo.repository;

import java.util.List;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import com.sid.demo.model.hindalco_model;

public interface update_password extends JpaRepository<hindalco_model,Integer>
{
@Query(value="update USER_REGISTRATION set password = :password WHERE user_name = :user_name and email = :email",nativeQuery=true)
List<String> findbyuser_update(@Param("password") String password,String user_name,String email);
}

Controller 类

@RequestMapping(value="/update_password",method = RequestMethod.POST)
public String update_password(@RequestParam String password)
{
//String rnumber_verified=randomNumber;
//int random_otp_verified=Integer.parseInt(rnumber_verified);



//System.out.println("update query string value = "+hindalco_user_login12);
System.out.println("user_name outside try = "+user_name12);
System.out.println("email outside try = "+password12);
try
{
System.out.println("user_inside try = "+user_name12);
System.out.println("email inside try = "+password12);

update_password_repo.findbyuser_update(password,user_name12,password12);
return "Entered password successfully updated";
}
catch(Exception e)
{
return"Iam sorry entered password did not match "+e;
}

}

模型类

package com.sid.demo.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="user_registration")
public class hindalco_model
{
@GeneratedValue(strategy=GenerationType.AUTO)
@Id
@Column(name="user_id")
private int user_id;

@Column(name="user_name")
private String user_name;

@Column(name="email")
private String email;

@Column(name="password")
private String password;

public int getUser_id() {
return user_id;
}

public void setUser_id(int user_id) {
this.user_id = user_id;
}

public String getUser_name() {
return user_name;
}

public void setUser_name(String user_name) {
this.user_name = user_name;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}



@Override
public String toString() {
return "hindalco_model [user_id=" + user_id + ", user_name=" + user_name + ", email=" + email + ", password="
+ password +"]";
}



}

我只是想编写 JPA @query 来更新我的一个列数据,为此,我想将函数调用从 Controller 类传递到包含 @query 注释函数定义的存储库文件,该函数定义将自动转换为 hibernate 查询通过编译器,因此在 oracle 数据库中,数据将被更新。

最佳答案

@Transactional
@Modifying(clearAutomatically = true)
@Query(value="update USER_REGISTRATION set password = ?1 WHERE user_name = ?2 and email = ?3",nativeQuery=true)
void findbyuser_update(String password,String user_name,String email);

@Modifying 注释用于增强@Query 注释,不仅可以执行 SELECT 查询,还可以执行 INSERT、UPDATE、DELETE,甚至 DDL 查询。

关于java - 用于更新查询的 JPA @Query 注释(oracle sql 开发人员)——org.hibernate.exception.GenericJDBCException : could not execute query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54982036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com