2016-06-06 11 views
1

Ich habe eine Klassen Task und TaskAttribute.Fehler beim Abfragen von ManyToOne-Daten: Ungültige abgeleitete Abfrage! Keine Unterkunft ID gefunden

Task hat

@OneToMany(mappedBy="task") 
private Set<TaskAttribute> taskAttrs; 

und TaskAttribute

@ManyToOne 
@JoinColumn(name="taskid") 
private Task task; 

Jetzt ist alles in Ordnung hat. Ich verwende CRUDRepository für Crud-Operationen. Ich möchte getAll() Methode zu getAll(taskId) von TaskAttributeRepository anpassen. (Holen Sie sich alle Attribute nur für eine TaskId).

Aber während die Definition der getAll() Methode in Repository zu ändern interface, erhalte ich Fehler:

Invalid derived query! No property id found for type Task! Traversed path: TaskAttribute.task.

Meine TaskAttributeRepository wie folgt aussieht:

public interface TaskAttributeRepository extends CrudRepository<TaskAttribute, Long>{ 

    public Collection<TaskAttribute> getAllTasksAtrByTaskId(Long \*What should go here*\); 

} 
+0

kann GetAllTasksAtrByTaskid (Long Taskid) – Argb32

+0

haben versucht, dass nur, aber kein Glück. BTW ich habe mit 'JpaRepository' erweitert und' 'Query' verwendet, um es zu bekommen. Aber es sollte einen Weg geben, es ohne es zu tun. –

Antwort

1

Ändern des Namens der Methode für mich gearbeitet.

1

Interessanterweise ist es nur eine Methode Namenskonvention Problem.

Sie können den Methodennamen einfach in findByTaskTaskId(long taskId) ändern.

+0

Dies bietet keine Antwort auf die Frage. Sobald Sie genügend [Reputation] (http://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (http://stackoverflow.com/help/privileges/comment); stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (http://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/15478760) –

+1

@ RosárioPereiraFernandes Dies liefert eine Antwort auf die Frage - nur die falsche. Die Markierung sollte eher nicht zur Überprüfung verwendet werden, wenn die Antwort richtig ist - das Dowvoting ist das, was Sie brauchen. –

0

Sie können einfach

public List<TaskAttribute> findByTask(Task task); 

verwenden wie Ihr Eigentum in einen Task Typ hat.