Spring data JPA requête avec les propriétés des paramètres
Quelle est la façon la plus simple de déclarer un Spring data JPA requête qui utilise les propriétés d'un paramètre d'entrée comme les paramètres de la requête?
Par exemple, supposons que j'ai une classe d'entité:
public class Person {
@Id
private long id;
@Column
private String forename;
@Column
private String surname;
}
et une autre classe:
public class Name {
private String forename;
private String surname;
[constructor and getters]
}
... alors je voudrais écrire un Printemps référentiel de données comme suit:
public interface PersonRepository extends CrudRepository<Person, Long> {
@Query("select p from Person p where p.forename = ?1.forename and p.surname = ?1.surname")
findByName(Name name);
}
... mais le Printemps de données /JPA n'aime pas me précisant les noms de propriété sur le ?1
paramètre.
Ce qui est le plus fantastique alternative?
- Faut-il dynamique? Pourquoi ne pouvez-vous pas simplement ajouter les
Name
table après la déclaration? Name
n'est pas nécessairement une entité.
Vous devez vous connecter pour publier un commentaire.
Ce lien pour vous aider: Spring Data JPA M1 avec SpEL expressions de prise en charge. L'autre exemple serait:
https://spring.io/blog/2014/07/15/spel-support-in-spring-data-jpa-query-definitions
Définir la méthode de requête avec des signatures comme suit.
Pour plus de détails, consultez le Printemps des Données JPA référence
Ce que vous voulez n'est pas possible. Vous devez créer deux paramètres, et liez-la séparément:
Vous pouvez essayer quelque chose comme ceci:
Vous pouvez également résoudre ce problème avec une interface par défaut de la méthode:
De cours que vous souhaitez toujours avoir la réelle référentiel de la fonction publique...
Travaillez-vous avec un
@Service
trop? Parce que si vous êtes, alors vous pouvez@Autowired
votrePersonRepository
à la@Service
et puis dans le service il suffit d'invoquer laName
de la classe et de l'utilisation de la forme @CuriosMind... proposé:et lors de l'invocation de la méthode à partir de l'espace de stockage dans le service, vous pouvez transmettre ensuite ces paramètres.
si nous sommes à l'aide de JpaRepository alors il sera créées en interne les requêtes.
Échantillon
Note
si supposons que nous avons besoin de requêtes complexes, alors il nous faut écrire manuel des requêtes comme