I want to setup simple rest api app on Spring boot java. I created users table. I created get all users and get one user. And I want to delete user by username.
UsersController.java
@RestController
public class UsersController {
    @Autowired
    private UsersService usersService;
    @DeleteMapping("/users/{username}")
    public void delete(@PathVariable String username) {
        usersService.delete(username);
    }
}
UsersRepository.java
@Repository
public interface UsersRepository extends JpaRepository<User, Long> {
    User findByUsername(String username);
    Long deleteByUsername(String username);
}
I can to delete user by username if I use delete(User user).
UsersService.java
@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    private UsersRepository usersRepository;
    @Override
    public void delete(String username) {
        User user = usersRepository.findUserByUsername(username);
        usersRepository.delete(user);
    }
But I cannot do it with deleteByUsername. It doesn't work. Why?
@Service
public class UsersServiceImpl implements UsersService {
    @Autowired
    private UsersRepository usersRepository;
    @Override
    public void delete(String username) {
        usersRepository.deleteByUsername(username);
    }
I get errors
javax.persistence.TransactionRequiredException: No EntityManager with actual transaction available for current thread - cannot reliably process 'remove' call
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:295) ~[spring-orm-5.3.6.jar:5.3.6]
at jdk.proxy4/jdk.proxy4.$Proxy82.remove(Unknown Source) ~[na:na]
...
at jdk.proxy4/jdk.proxy4.$Proxy86.deleteByUsername(Unknown Source) ~[na:na]
...
And what is the difference between delete() and remove()?
