CrudRepository: trouver par de multiples entités liées
J'ai un peu de mal à concevoir une requête dans un CrudRepository.
J'ai deux entités, CourseOffering et Département (uniquement code indiqué):
CourseOffering.java:
public class CourseOffering implements Serializable
{
private Department department;
@ManyToOne(fetch = FetchType.LAZY, optional = true)
@JoinColumn(name = "DepartmentId", nullable = true)
@JsonProperty
public Department getDepartment()
{
return this.department;
}
public void setDepartment(Department department)
{
this.department = department;
}
}
Department.java:
public class Department implements Serializable
{
private Set<CourseOffering> courses;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "department")
public Set<CourseOffering> getCourses() {
return this.courses;
}
public void setCourses(Set<CourseOffering> courses) {
this.courses = courses;
}
}
et la CrudRepository en question:
CourseOfferingRepository.java:
import java.util.List;
import edu.ucdavis.dss.dw.entities.CourseOffering;
import org.springframework.data.repository.CrudRepository;
public interface CourseOfferingRepository extends CrudRepository<CourseOffering, Long>
{
CourseOffering getOneByTermIdAndNumberAndDepartmentId(long termId, String number,
long departmentId);
List<CourseOffering> findByDepartmentCode(String deptCode);
//List<CourseOffering> findAllByDepartmentCode(String deptCodes);
List<CourseOffering> findByTermCode(String termCode);
}
Les trois fonctions dans CourseOfferingRepository qui ne sont pas commentées fonctionner comme prévu. J'essaie d'obtenir la quatrième de travail.
Ce que je voudrais faire est d'être en mesure de revenir toutes les CourseOfferings où le code département est l'un des nombreux codes de département. Notez que le CourseOffering tableau lui-même ne détient qu'une department_id entier qui référence l'ID dans le Département de la table, où le réel deptCode est stocké.
Comment puis-je obtenir commenté CrudRepository fonction fonctionne correctement? Ou autrement dit, comment fait-on le pluriel version de "Liste findByDepartmentCode(String deptCode);"?
Merci d'avance pour tous les conseils que vous pouvez offrir.
findByDeptCodeIn(Collection<String> deptCodes)
faire ce que vous voulez?Oui, je vous remercie! Ne savais pas à propos de la 'Dans' peu à la fin.
J'ai ajouté le commentaire comme une réponse 🙂
OriginalL'auteur Christopher | 2014-06-10
Vous devez vous connecter pour publier un commentaire.
Vous devez modifier le commentaire sur le code:
List<CourseOffering> findByDeptCodeIn(Collection<String> deptCodes)
Découvrez cette partie de la documentation pour voir ce que les autres mots-clés sont autorisés
Department
classe? (Je veux dire sans avoir attribut de service dansCourseOffering
classe).Je n'ai pas essayé, mais je doute sérieusement que ça marcherait
OriginalL'auteur geoand
Comme geoand souligné dans les commentaires, la réponse est:
Grâce geoand!
OriginalL'auteur Christopher