2017-10-11 17 views
1

이 작업으로 메서드 쿼리의 경계에 도달했는지 확실하지 않습니다. 두 테이블, User 테이블과 Password 테이블이 있습니다. User은 복수의 Password을 가질 수 있습니다 (최신 정보는 현재 정보 임).주문을 포함하여 여러 테이블이 포함 된 방법 쿼리?

User 저장소에서 메서드 이름을 사용하여 사용자 이름에 "현재"Password을 가져오고 싶습니다.

No property byUsers found for type long! Traversed path: UsersEntity.passwords.created.

내가 돈 ': 그것은 내가 방법 쿼리로 시도 무엇이

"Select FIRST(*) from Passwords INNERJOIN Users ON Users.id=Passwords.userId WHERE Users.username=%s ORDER BY Passwords.created DESC" 

같이 보일 것이다 SQL에서

나에게 예외를 제공하는 findFirstPasswordOrderByPasswords_CreatedByUsers_Username(String username)

입니다 여전히 created 필드를 가리키는 이유를 알 수 없습니다. 메소드 쿼리에 너무 많은가? 아니면 내가 잘못하고 있니?

답변

1

암호를 검색 할 때 암호 저장소에이 방법을 정의해야합니다. 같은 그 저장소에서이 방법을 볼 것이다 :

Passwords findFirstByUser_UsernameOrderByCreatedDesc(String username); 

이 방법을 구현하려면 암호 엔티티 클래스가 난 것을, (쿼리)에서 사용자 속성에 사용자 테이블을 참조

+0

이 무슨 뜻을 가지고 있어야 내'UserRepository'에서'UserEntities' 만 가져올 수 있도록 제한되어 있습니까? –

+1

예, 리포지토리의 쿼리 메서드는 리포지토리가 연결된 엔터티로 제한됩니다. 그러나 원하는 쿼리가 포함 된 사용자 정의 @Query 주석을 사용하여 메서드를 사용할 수 있습니다. –