将对象字段添加到@Query

时间:2020-05-22 10:47:16

标签: java mysql jpa

在请求中,对象作为参数传递。如何将该对象的字段传递给请求? 谢谢大家。

@Repository
public interface DevelopersRepository extends CrudRepository<Developers, Integer> , DevelopersDao {

    /**
     * Update developer.
     *
     * @param developer developer.
     * @return number of updated records in the database.
     */
    @Query(value="UPDATE developers SET firstName=:firstName, lastName = :lastName WHERE developerId = :developerId",
            nativeQuery = true)
    Integer update (Developers developer);

2 个答案:

答案 0 :(得分:1)

您使用@Param。我还建议更改数据库中的列名,因为它们当前不符合约定。 “名字”应该是“名字”,依此类推。

Integer update (@Param("firstName") String firstName, @Param("lastName") String lastName, @Param("developerId") Integer developerId);

EDIT (如果要保持方法参数不变),可以使用:

@Query(value="UPDATE developers SET firstName = :developer.firstName, lastName = :developer.lastName WHERE developerId = :developer.developerId",
            nativeQuery = true)
Integer update (@Param("developer") Developers developer);

developer.developerId可能需要更改为developer.id,这取决于您在实体类中的命名方式。

答案 1 :(得分:0)

我解决了这个问题

@Modifying
    @Query(value="INSERT INTO developers (firstName, lastName) VALUES (:#{#dev.firstName}, :#{#dev.lastName})",
            nativeQuery = true)
    Integer create(@Param("dev")Developers developer);