Использование @EmbeddedId с JpaRepository

У меня есть простой класс Entitly с @EmbeddedId(Integerи Stringполя в отдельном классе). И я использую данные Spring (org.springframework.data.jpa.repository.JpaRepository) для доступа к базе данных (MySql), с обычным идентификатором запросы работают нормально, как сгенерированные Spring, так и те, что написал сам. С 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, я пробовал много разных имен методов, но всегда получить исключения из парсера метода..

35
задан Xavi López says GoFundMonica 18 May 2012 в 09:38
поделиться