#java #spring #spring-boot #spring-data-jpa #spring-data
#java #весна #весенняя загрузка #spring-data-jpa #spring-данные
Вопрос:
У меня есть структура класса примерно так, как показано ниже:
public class X {
@Id
private Long id;
//One to one mapping
private Y y;
....Some more attibutes
}
public class Y {
@Id
private Long id;
//ManyToOne mapping
private Z z;
....Some more attibutes
}
public class Z {
@Id
private Long id;
....Some more attibutes
}
Теперь у меня есть пользовательский интерфейс, как показано ниже
public interface XRepository extends JPARepository<X, Long> {
// This is not working,
public X findByIdAndYIdAndZId(Long xId, Long yId, Long zId);
//This also doesn't work obviously for same reason as above one
public X findYIdAndZId(Long yId, Long zId);
}
Я получаю это исключение
org.springframework.data.mapping.PropertyReferenceException: No property zId found for type X!
Пожалуйста, помогите мне, как создать метод для такого сценария
Ответ №1:
Поле Z
не существует в X
, оно находится в Y
классе. Итак, вы должны использовать полный путь к объекту для Z
‘s id
.
public X findByIdAndYIdAndYZId(Long xId, Long yId, Long zId);
Примечание: Пожалуйста, подумайте о том, чтобы использовать понятное имя для класса. Я думаю, они только для примера.
Ответ №2:
Вы можете использовать import org.springframework.data.mongodb.repository.Query;
аннотацию.
@Query("{$and : [{'y.id': ?0}, {'y.z.id': ?1 }]}")
public X findByIdAndYIdAndZId(Long yId, Long zId);
Вы получите больше представления о Query
Комментарии:
1. Я знаю, что мог бы сделать это с помощью запроса, но я хотел использовать метод.