I've two entities, a user and a registered user.
A registered user has a field of type user. I would like to have a method in the spring data repository related to this registered user entity to search all registered users by the username of the user that is connected to the registered user.
So, this is the registered user entity with an associated user field:
@Entity public class RegisteredUser implements Serializable { ... @OneToOne @JoinColumn(name = "USERNAME_FK") private User user; ... }
and this is a user with a username:
@Entity public class User implements Serializable { ... @Id @Column(nullable = false) protected String username; ... }
Spring @Repository annotation is used to indicate that the class provides the mechanism for storage, retrieval, search, update and delete operation on objects.
Query methods are methods that find information from the database and are declared on the repository interface. For example, if we want to create a database query that finds the Todo object that has a specific id, we can create the query method by adding the findById() method to the TodoRepository interface.
CrudRepository provides CRUD functions. PagingAndSortingRepository provides methods to do pagination and sort records. JpaRepository provides JPA related methods such as flushing the persistence context and delete records in a batch.
Spring Data (at least 1.12.x version) uses PropertyPath#from method to extract path to a property for a predicate constructed from method name. According to sources it uses underscore as "field separator". So first variant is as follows
public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> { List<RegisteredUser> findRegisteredUserByUser_Username(String username); }
There is also code which treat an uppercase char as field separator if whole field name is not found. So if you don't have a userUsername
field in RegisteredUser
second varian is
public interface RegisteredUserRepository extends CrudRepository<RegisteredUser,String> { List<RegisteredUser> findRegisteredUserByUserUsername(String username); }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With