我有以下代码:
public interface UserRepository extends CrudRepository<User, Integer> {
@Modifying
@Transactional
@Query(value = "INSERT INTO users(email, password, name) VALUES (?,?,?)", nativeQuery = true)
void insertUserToUsers(String email, String password, String name);
}
我不想传递值,我想传递这样的用户对象:
void insertUserToUsers(User user);
答案 0 :(得分:1)
尝试一下
public interface UserRepository extends CrudRepository<User, Integer> {
@Modifying
@Transactional
@Query(value = "INSERT INTO users(email, password, name) VALUES (:#{#user.email},:#{#user.firstname},:#{#user.name})", nativeQuery = true)
void insertUserToUsers(@Param("user") User user);
}
答案 1 :(得分:1)
尝试此代码,
@Modifying
@Transactional
@Query(value = "INSERT INTO users(email, password, name) VALUES (?,?,?)", nativeQuery = true)
void insertUserToUsers(String email, String password, String name);
default void insertUserToUsers(User user) {
return insertUserToUsers(user.getEmail(), user.getPassword(), user.getName());
}
答案 2 :(得分:0)
在使用UserRepository
的地方,可以使用默认方法保存user
:
例如:
@Service
public class MyService{
@Autowired
private UserRepository userRepository ;
public void example(User user){
userRepository.save(user)
}
}
由于CrudRepository提供了一些默认方法,因此您可以检查here