I am new to hibernate.
There is a UserRepository and RestController .
I want to do a search for one of the fields of the user: First Name, Last Name, Gender.
If getting all users, search by id is clear. But how to make a sample of only one field?
public interface UserRepository { UserEntity save(UserEntity car); void update(UserEntity user); List<UserEntity> getAll(); List<UserEntity> getAllByFirstName(); List<UserEntity> getAllByLastName(); List<UserEntity> getAllByGender(); UserEntity getById(Long id); void remove(Long id); } @Repository @Transactional() public class UserRepositoryImpl implements UserRepository { @PersistenceContext private EntityManager entityManager; @Override @Transactional public UserEntity save(UserEntity user) { if(user.getId() != null){ return entityManager.merge(user); } else { entityManager.persist(user); return user; } } @Override public void update(UserEntity user) { } @Override public List<UserEntity> getAll() { CriteriaQuery<UserEntity> criteria = entityManager.getCriteriaBuilder().createQuery(UserEntity.class); criteria.select(criteria.from(UserEntity.class)); // criteria.where( builder.equal( root.get( Person_.name ), "John Doe" ) ); return entityManager.createQuery(criteria).getResultList(); } @Override public List<UserEntity> getAllByFirstName() { return null; } @Override public List<UserEntity> getAllByLastName() { return null; } @Override public List<UserEntity> getAllByGender() { return null; } @Override public UserEntity getById(Long id) { return entityManager.find(UserEntity.class, id); } @Override public void remove(Long id) { UserEntity user = getById(id); if(user != null) { entityManager.remove(user); } } } Service:
public interface UserService { UserEntity save(UserEntity userEntityy); List<UserEntity> getAll(); UserEntity getById(long id); void remove(long id); } @Service public class UserServiceImpl implements UserService { @Autowired UserRepository userRepository; @Override public UserEntity save(UserEntity userEntityy) { return userRepository.save(userEntityy); } @Override public List<UserEntity> getAll() { return userRepository.getAll(); } @Override public UserEntity getById(long id) { return userRepository.getById(id); } @Override public void remove(long id) { userRepository.remove(id); } }
@Override @Transactional public UsersEntity getUserByUsername(String username) { Query query = session.createQuery("from UsersEntity where username = :username"); query.setParameter("username", username); final UsersEntity entity = (UsersEntity) query.uniqueResult(); log.debug("User found by username " + username + ": " + entity); return entity; }@Override @Transactional public UsersEntity getUserByUsername(String username) { Query query = session.createQuery("from UsersEntity where username = :username"); query.setParameter("username", username); final UsersEntity entity = (UsersEntity) query.uniqueResult(); log.debug("User found by username " + username + ": " + entity); return entity; }@Override @Transactional public UsersEntity getUserByUsername(String username) { Query query = session.createQuery("from UsersEntity where username = :username"); query.setParameter("username", username); final UsersEntity entity = (UsersEntity) query.uniqueResult(); log.debug("User found by username " + username + ": " + entity); return entity; }truth is a littleList<UserEntity> getAllByFirstName();what you want to get in theList<UserEntity> getAllByFirstName();and so on - bench_doos