执行本地插入查询后获取实体ID + Spring JPA

3

我在我的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语句并获取用户主实体,但出现以下异常

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,但什么都没有有效果。如何解决?
1个回答

3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接