Usando @EmbeddedId com JpaRepository
Eu tenho classe Entitly simples com o@EmbeddedId
(Integer
eString
campos em classe separada). E eu uso os dados da primavera (org.springframework.data.jpa.repository.JpaRepository
) para acessar o banco de dados (MySql), com o Id normal as consultas estão funcionando bem, tanto as geradas pelo Spring quanto as que eu escrevi por mim. Com oEmbeddedId
Eu não consegui criar a consulta correta. O que eu quero fazer é selecionar todo o id (um dos campos do embeddedId para o qual alguma condição ocorre) Aqui você tem alguns exemplos de código, talvez alguém tenha uma idéia de como resolvê-lo.
A classe de entidade:
@Entity
@Table(name="table_name")
public class EntityClass {
@EmbeddedId
private EmbeddedIdClass id;
private String someField;
//rest of implemetation
}
a classe 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
}
e o repositório:
@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
}
Eu não encontrei nenhuma documentação como criar os métodos para suportar o @EmbeddedId, eu estava tentando muitos nomes de métodos diferentes, mas eu sempre obtinha exceções do analisador de métodos.