gpt4 book ai didi

java - 在带有自定义查询的 Spring Repository JPA 中使用对象作为参数

转载 作者:行者123 更新时间:2023-12-01 18:42:20 25 4
gpt4 key购买 nike

我有一个代码如下:

public interface User extends JpaRepository<User, Integer> {   
@Modifying
@Query(value = "INSERT INTO USER (USER_ID,FIRST_NAME,LAST_NAME) VALUES(:user)", nativeQuery = true)
void saveUser(@Param("user") User user);
}

但是我遇到了以下异常:

java.sql.SQLException: Invalid column index
at oracle.jdbc.driver.OraclePreparedStatement.setIntInternal(OraclePreparedStatement.java:5223) ~[ojdbc-12.1.0.1.jar:12.1.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatement.setInt(OraclePreparedStatement.java:5210) ~[ojdbc-12.1.0.1.jar:12.1.0.1.0]
at oracle.jdbc.driver.OraclePreparedStatementWrapper.setInt(OraclePreparedStatementWrapper.java:209) ~[ojdbc-12.1.0.1.jar:12.1.0.1.0]
at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$1.doBind(IntegerTypeDescriptor.java:46) ~[hibernate-core-5.0.12.Final.jar:5.0.12.Final]

我观察到大多数自定义查询都具有简单数据类型的参数。是否可以使用对象?

最佳答案

这样做:

@Modifying
@Query(value = "INSERT INTO USER (USER_ID,FIRST_NAME,LAST_NAME) VALUES(:userID, :firstName, :lastName)", nativeQuery = true)
void saveUser(@Param("userID") Integer userId, @Param("firstName") String firstName, @Param("lastName") String lastName);

当调用此方法时,请执行以下操作:

..saveUser(user.getID(), user.getFisrtName(), user.getLastName());

关于java - 在带有自定义查询的 Spring Repository JPA 中使用对象作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59902270/

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