Всем привет,
Есть значит у меня тест
@Test
public void FindExists() throws Exception {
assertNotNull(userService.findById(1L));
}
1L - единица под видом Long'а. Верно ведь?
findById() выглядит так
public User findById(Long id) {
return userRepository.findOne(id);
}
Вопрос: Почему Java на меня кричит что ей необходим ...
String?!
org.hibernate.TypeMismatchException: Provided id of the wrong type for class cards.server.entity.User. Expected: class java.lang.String, got class java.lang.Long
Спасибо
Update: полный "жизненный цикл переменной id
В POJO
Users.java@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
private Long id;
В репозиториях.
BaseRepository.java@NoRepositoryBean
public interface BaseRepository<T, Long extends Serializable> extends Repository<T, Long> {
void delete(T deleted);
List<T> findAll();
T findOne(Long id);
T save(T persisted);
}
Его наследник -
UserRepository.java@Repository
public interface UserRepository extends BaseRepository<User, Long> {
List<User> findByUsernameLike(String username);
User findByUsername(String username);
List<User> findByEnabledTrue();
List<User> findByEnabledFalse();
void deleteByUsername(String username);
}
Теперь сервисы.
BaseService.javapublic interface BaseService<T> {
T add(T item);
T update(Long id, T data);
void delete(Long id);
T findById(Long id);
List<T> findAll();
}
Его наследник -
UserService.java@Service
public class UserService implements BaseService<User> {
@Resource
private UserRepository userRepository;
public User add(User item) {
return userRepository.save(item);
}
public User update(Long id, User data) {
User user = findById(id);
user.setUsername(data.getUsername());
user.setDetails(data.getDetails());
user.setEnabled(user.getEnabled());
user.setPassword(data.getPassword());
user.setRole(data.getRole());
user.setPacks(data.getPacks());
return user;
}
public void delete(Long id) {
userRepository.delete(userRepository.findOne(id));
}
public User findById(Long id) {
return userRepository.findOne(id);
}
public List<User> findByUsernameLike(String username) {
return userRepository.findByUsernameLike(username);
}
public User findByUsername(String username) {
return userRepository.findByUsername(username);
}
public List<User> findAll() {
return userRepository.findAll();
}
}
Ну, и сам
тест UserRepository
@Resource
private UserService userService;
// some code
@Test(expected = NullPointerException.class)
public void FindDoesntExists() throws Exception {
assertNull(userService.findById(1000L));
}
Структура проекта