2017-07-12 5 views
0

Wir verwenden Federdaten jpa mit Federschuh 1.5.3 verfügbar. In der Repository-Klasse wollte ich nur ein paar Spalten aus einer Tabelle holen, die Daten aus der Kind-Tabelle enthält (das ist eine Zuordnung), also schrieb ich eine Methode mit Abfrage. Aber das Abfragemethode nicht funktioniert und in ProtokollenKind Eigenschaft im Frühjahr Daten jpa Abfrage funktioniert nicht

SQL Error: -104, SQLState: 42601 
DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=.;ARRAY + - ROW NEXTVAL PREVVAL NEXT PREVIOUS (<INTEGER>, DRIVER=4.19.26 

Hier unten Fehler/Warnungen zu sehen, ist meine Muttergesellschaft:

@Entity 
@Table(name = "parent_table")  
public Class Parent { 
    // no-param constructor 

    Parent(int id, String name, Child childData) { 
     // assign these accordingly 
    } 
    // id, name, and couple of other mappings 

    @OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval=true) 
    private Set<Child> childData; 
} 

Kinder Einheit:

@Entity 
@Table(name = "child_table") 
public class Child { 
    // id and couple of other columns 

    @ManyToOne (fetch = FetchType.LAZY) 
    @JoinColumn(name = "p_id", nullable = false, insertable = false, updatable = false) 
    private Parent parent; 

} 

Und Repository hier ist :

@Transactional 
public interface ParentRepository extends CrudRepository<Parent, Integer> { 

    @Query("select new Parent(id, name, p.childData) from Parent p where p.id=?1") 
    public Parent findOnlyChildDataById(final int id); 

} 

Antwort

0

Sie Entity nicht durch seine ‚id‘ verwenden, um benutzerdefinierte Methode zu erhalten, verwenden Sie native Methode findOne:

public interface ParentRepository extends CrudRepository<Parent, Integer> { 
} 

@Service  
public ParentService { 

    @Authoware 
    prvate ParentRepository repo; 

    public Parent getParentById(int id) { 
     return repo.getOne(id); 
    } 
} 
+0

Vielen Dank für Ihre Antwort. Aber, hier brauche ich nicht alle Spalten im Elternteil. Also, ich schrieb eine benutzerdefinierte Methode mit jpa-Abfrage. – Pawan

+0

Wenn Sie eine Entität ohne einige Eigenschaften benötigen, dann ist dies keine Entität, es ist ein [DTO] (https://en.wikipedia.org/wiki/Data_transfer_object) und Sie benötigen eine andere [technic] (https: // stackoverflow. com/a/42946268), damit umzugehen. – Cepr0

+0

Danke. Aber ich verwende bereits eine ähnliche Methode, die unten in Repo gegeben wird, die gut funktioniert. @Query ("wählen neuen Parent (ID, Name, Anwendung, anothercolumn) von Eltern p wo p.application = 1") public List findAllByApplication (String-Anwendung) I Problem nur immer bin, wo ich bin, einschließlich untergeordnete Eigenschaft in der Abfrage. – Pawan

Verwandte Themen