У меня есть простой класс Entitly с полями @EmbeddedId
(Integer
и String
в отдельном классе). И я использую данные Spring (org.springframework.data.jpa.repository.JpaRepository
) для доступа к базе данных (MySql), причем нормальный идентификатор работает нормально, как созданные Spring, так и те, которые я написал сам. С EmbeddedId
мне не удалось создать правильный запрос. Я хочу сделать это, чтобы выбрать все id (одно из полей embeddedId, для которого выполняется какое-то условие). Здесь у вас есть примеры кода, возможно, у кого-то появится идея, как его решить.
Объект класса:Использование @EmbeddedId с JpaRepository
@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, я пытался много разных имен методов, но я всегда получаю исключения из парсера метода.
Правильно, мне нужно использовать имена полей и просматривать их, однако я получаю вывод sql с подсчетом (отличным от ...) Где счет? возвращаемый тип - это Page или List (я пытался оба ... –
Mat
Ответ в порядке, другая проблема, которую я имел, была доступна для просмотра на странице ... кажется, что запросы с четкими или группами с помощью can not handle Pageable ... pity :( – Mat