문제

저는 간단하 Entitly 클래스 @EmbeddedId (IntegerString 필드에는 별도의 클래스).그리고 내가 사용하는 봄 데이터(org.springframework.data.jpa.repository.JpaRepository 용)데이터베이스에 액세스(MySql),정상적인 Id 쿼리가 작동하 모두 생성된 스프링에 의해 사람을 썼습니다.과 EmbeddedId 게를 만들기 위해 관리하고 올바른 query.내가 무엇을 원하는지 선택하려면 모든 id(하나의 필드의 embeddedId 는 몇 가지 조건이 발생합니다)여기서 당신은 몇 가지는 코드 샘플을,어쩌면 사람이 아이디어가 있는 방법을 해결합니다.
엔터티 클래스:

@Entity
@Table(name="table_name")
public class EntityClass {

    @EmbeddedId
    private EmbeddedIdClass id;
    private String  someField;
    //rest of implemetation
}

이 EmbeddedId 클래스:

@Embeddable
public class EmbeddedIdClass implements Serializable {

public EmbeddedIdClass(Long id, String language) {
    super();
    this.id = id;
    this.language = language;
}

public UserAdTextId() {}        

@Column(name="ad_id", nullable=false)
    private Integer id;

    @Column(name="language_code", nullable=false)
    private String  language;
    //rest of implemetation
}

그리고 저장소:

@Transactional(readOnly=true)
public interface MyRepository extends JpaRepository<EntityClass, EmbeddedIdClass> {
    @Query("select distinct ad_id from EntityClass where userId = :userId and (/*here the conditions*/)")
    public Page<Integer> findUserAdsWithSearchString(@Param("userId") Integer userId, @Param("searchString") String searchString, Pageable page);
//rest of implemetation
}

모 문서를 작성하는 방법 방법에 대한 지원@EmbeddedId,내가 하려고 많은 다른 방법을 이름은,그러나 나는 항상 예외에서 방법을 파서..

도움이 되었습니까?

해결책

그것은 보인다 당신의 쿼리가 사용하여 열 이름이 있습니다.이 포함되어야 합니다 호텔 이름을 포함하여 탐색으로 포함된다.또한 관련 질문에 여기에 그래서: 를 작성하는 방법 JPQL 선택이 포함된 id?

select distinct id.id from EntityClass where userId = :userId and (...)

첫번째 id 말 특성 idEntityClass (의 유형 EmbeddedIdClass고),둘째는 하나를 말 idEmbeddedIdClass.

또한,이 있는지 확인하십시오 userId 숙박 시설에 EntityClass.

다른 팁

(여 Yosi Lev) 이 수행할 수 있습으로 다음과 같다:가정의 주체가:

@Entity
@Table(name="JRULES_FLOW")
public class JrulesFlow implements Serializable {
   private static final long serialVersionUID = 1L;

   @EmbeddedId
   private JrulesFlowPK id;

   @Column(name="NEXT_SEQ")
   private int nextSeq;

   @Column(name="REF_ID")
   private String refId;

   @Column(name="TASK_TYPE")
   private String taskType;

   @Column(name="VALUE_TO_FIND")
   private String valueToFind;
}

과 당신의 PK 클래스:

@Embeddable
public class JrulesFlowPK implements Serializable {
   //default serial version id, required for serializable classes.
   private static final long serialVersionUID = 1L;

   @Column(name="FLOW_ID")
   private String flowId;

   @Column(name="TASK_SEQ")
   private long taskSeq;
 }

JPA 저장소 방법 이름 shouls 의 이름을 포함 id 분야에서 주요 클래스에 의해 다음을 제공하려는 쿼리 uppon 내 PK 클래스:

public interface JrulesFlowRepository extends JpaRepository<JrulesFlow, 
      JrulesFlowPK> { // NOTE: put here both classes - also the pk class..
   public List<JrulesFlow>  findByIdFlowId(String flowId);  // Id - is the 
                  // @EmbeddedId in JrulesFlow. FlowId is an attribute 
                  // within JrulesFlowPK
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top