J'apprends avec bootspring.
findByDate(int date);
fonctionnait jusqu'à ce que je déménage int Date
dans la classe interne.
Maintenant, je peux enregistrer de nouvelles entrées mais je ne peux pas les récupérer par Date
Que dois-je changer?
@Transactional
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, Long> {
public ExpirationDTO findByDate(int date);
}
et
@Embeddable
public static class IdKey implements Serializable{
@NotNull
int date;
@ManyToOne
ProductDTO product;
public IdKey(){
}
//setters and getters
}
@EmbeddedId
private IdKey id;
@NotNull
int units;
public ExpirationDTO(){
}
//setters and getters
}
lève cette exception:
org.springframework.data.mapping.PropertyReferenceException: No property date found for type ExpirationDTO!
Vous devez inclure le nom de la classe de clé intégrée dans le référentiel au lieu de Long. Essayez celui-ci (non testé):
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, IdKey> {
public List<ExpirationDTO> findByIdDate(int date);
}
Là après findBy
Id
est le vôtre EmbeddedId
et Date
est l'attribut de la classe intégrable. Et encore une chose: si vous n'utilisez qu'une partie de la clé intégrée, vous ne pouvez pas vous attendre à un seul résultat ...
Vous devez inclure le nom de la classe de clé intégrée dans le référentiel et également ajouter un trait de soulignement (_)
Testé ci-dessous:
public interface ExpirationDAO extends JpaRepository<ExpirationDTO, IdKey> {
public List<ExpirationDTO> findByIdKey_Date(Date date);
}