저는 Spring JPA에 익숙하지 않습니다. (오히려 오랜 시간이 지났습니다.) JPA 저장소 작성에 도움이 필요합니다. 본인에게는 엔티티 클래스 인 일정과 사용자가 있습니다. 이 둘 사이에는 일대일 관계가 있습니다.일대일 관계에 대한 Spring JPA 쿼리를 작성하는 방법은 무엇입니까?
@Entity
@Table(name = "ITINERARY")
public class Itinerary implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue(generator = "Itinerary_IDGenerator", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "Itinerary_IDGenerator", sequenceName = "Itinerary_IDGenerator", allocationSize = 1)
private long id;
@Basic(optional = false)
@Column(nullable = false)
@Temporal(TemporalType.DATE)
private Date itineraryDate;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "USER_ID")
User user;
}
@Entity
@Table(name = "USER")
public class User implements Serializable {
@Id
@Column(name = "ID")
@GeneratedValue(generator = "User_IDGenerator", strategy = GenerationType.SEQUENCE)
@SequenceGenerator(name = "User_IDGenerator", sequenceName = "User_IDGenerator", allocationSize = 1)
private long id;
@Basic(optional = false)
@Column(unique = true, nullable = false)
private String signInName;
}
내가합니다 (점은 지정된 singInName 포함) 사용자에 대한 일정을 반환하는 방법과 일정 기간이하는 여행 일정 엔터티에 대한 스프링 JPA 저장소를 쓰고 싶어요. 다음 인터페이스를 작성했지만 스프링 쿼리를 지정하는 방법을 모르겠습니다. 작동하는 JPA 쿼리를 제공했습니다.
public interface ItineraryRepository extends Repository<Itinerary, Long> {
//String queryStr = "select i from Itinerary i where i.user.signInName = '" + signedInUser + "' and i.itineraryDate = :today";
@Query(select i from Itinerary i where i.user.signInName = :signInName and i.itineraryDate = :today)
Itinerary findBySignInNameAndDate(@Param("signInName") String signInName, @Param("itineraryDate") Date itineraryDate);
}
쿼리에 오류가 발생합니다.
Invalid derived query! No property signInName found for type Itinerary!
및
Syntax error on tokens, delete these tokens
어떻게 스프링 쿼리에이 쿼리를 변환합니까? 설명서에서 예제를 찾을 수 없습니다. 이것이 가능하고 저장소를 잘못 사용하고 있는지 확실하지 않습니다.