【问题标题】:Get Entity ID after executing Native insert query + Spring JPA执行本机插入查询 + Spring JPA 后获取实体 ID
【发布时间】:2022-01-05 18:10:49
【问题描述】:

我在我的 JPA 存储库中使用本机查询来运行 INSERT 查询 - 因为,我无法通过 JPA 运行一些查询。

String INSERT_USER_IN_TO_DATABASE = "INSERT INTO USER_MASTER " +
            "(" +
            "MOBILE_X,USER_TYPE,COUNTRYCODE,USER_N,USER_LAST_N,GENDER,DOB) " +
            "VALUES ( " +
            "EncryptByKey(Key_GUID(convert(varchar,?1)), ?2)," +
            "1,+91,?3,?4,?5,?6" +
            ")";

    @Query(value = INSERT_USER_IN_TO_DATABASE, nativeQuery = true)
    @Modifying
    UserMasterEntity saveNewUser(String encryptionKey,
                                 String phoneNumber,
                                 String name,
                                 String lastName,
                                 String gender,
                                 String dob);

我的意图是执行INSERT 语句并获取userMaster 实体。但我得到以下异常

Caused by: java.lang.IllegalArgumentException: Modifying queries can only use void or int/Integer as return type! Offending method: public abstract com.officeride.fileprocess.job.bulkuser.UserMasterEntity com.officeride.fileprocess.job.bulkuser.UserMasterRepository.saveNewUser(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,java.lang.String)

我在我的实体中也使用了@ColumnTransformer 的东西,但没有任何效果。

如何解决这个问题?

【问题讨论】:

    标签: java spring-boot hibernate spring-data-jpa


    【解决方案1】:

    您不能让INSERT INTO 语句返回任何内容。根据你的数据库的支持,你可以执行多个语句,例如,INSERT INTO ...; SELECT ...,但是 Spring Data JDBC 不支持这个。

    【讨论】:

      猜你喜欢
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2016-09-30
      • 2013-05-24
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多