Spring Data JPA / Hibernate - метод findByY (String y) в @Repository, где Y доступен через объект X - PullRequest
0 голосов
/ 21 мая 2018

У меня есть UserRepository:

@Repository
public interface UserRepository extends JpaRepository<User, Long>
{
}

, где User:

@Entity
@Table(name = 'user')
public class User
{
    @Id
    private Long id;

    @OneToOne(mappedBy = "owner", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    private UserDetails userDetails;
}

и UserDetails:

@Entity
@Table(name = 'user_details')
public class UserDetails
{
    @Id
    private Long id;

    @OneToOne(fetch = FetchType.LAZY)
    @MapsId
    private User owner;

    private String name;
}

Пакеты, импорт, методы получения и установкиисключены для кода уборщика.

Теперь, как я могу найти пользователей по их имени?Добавление этого в интерфейс UserRepository не будет работать:

List<User> findByName(String name);

, потому что он выдает:

No property name found for type User

Я ищу что-то вроде этого:

List<User> findByNameOfUserDetails(String name);

1 Ответ

0 голосов
/ 21 мая 2018

Пожалуйста, посмотрите документы JPA по Spring Data здесь .

Вам понадобится что-то вроде findByUserDetailsName(String name).Чтобы устранить эту неоднозначность, вы можете использовать _ внутри имени вашего метода для определения точек обхода вручную.Таким образом, наше имя метода будет findByUserDetails_Name(String name).

...