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); } } 
  • What prevents to use hql? - bench_doos
  • @bench_doos example possible? - Tsyklop
  • For example, getting a user by username @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 little List<UserEntity> getAllByFirstName(); what you want to get in the List<UserEntity> getAllByFirstName(); and so on - bench_doos
  • Why requests? You have the same Hiber ... If you want queries, throw out the Hiber. If you want heber, throw out requests. There are DetachedCriteria, there are Restrictions. - test123
  • @ test123 example is possible? - Tsyklop

0