JPA-Daten-Repositorys, mit SqlResultSetMapping und native queries

Ich steckte mit die folgende situation:

Meine Einheiten sind miteinander verwandt, aber in einer Weise, die ich nicht nutzen konnte JPQL. Ich war gezwungen, verwenden Sie das native SQL. Jetzt möchte ich anzeigen dieser Ergebnisse in ein ValueObject. Klar, ich will nicht, um eine Liste von Object-Arrays (List<Object[]>). Ich habe 6 Personen, von dem aus ich Brauch nur ein paar Spalten. Kann jemand mir ein Beispiel auf, wie die Implementierung einer solchen Zuordnung eines einheitlichen Abfrage?

Tutorial , die ich durchgemacht habe.

Mein code:

@SqlResultSetMapping(
    name = "findAllDataMapping",
    classes = @ConstructorResult(
            targetClass = MyVO.class,
            columns = {
                    @ColumnResult(name = "userFirstName"),
                    @ColumnResult(name = "userLastName"),
                    @ColumnResult(name = "id"),
                    @ColumnResult(name = "packageName")
            }
    )
)

@NamedNativeQuery(name = "findAllDataMapping",
    query = "SELECT " +
            "    u.first_name as userFirstName, " +
            "    u.last_name as userLastName, " +
            "    i.id as id, " +
            "    s.title as packageName, " +
            "FROM " +
            "    invoice as i " +
            "JOIN user as u on i.user_id=u.id " +
            "LEFT JOIN subscription_package as s on i.subscription_package_id=s.id " +
            "where  u.param1=:param1 and i.param2=:param2" +
)

public class MyVO {
    private String userFirstName;
    private String userLastName;
    private Long id;
    private String packageName;

    public MyVO (String userFName, String userLName,
            Long id, String packageName) {
        this.userFirstName = userFName;
        this.userLastName = userLName;
        this.id = id;
        this.packageName = packageName;
    }

    //getters & setters
}

In meinem jpa-repository-Modul:

public interface MyRepository extends JpaRepository<MyEntity, Long> {
    List<MyVO> findAllOfMyVO(@Param("param1") String param1, @Param("param2") String param2);
}

Der Punkt ist, dass ich nicht weiß, wo diese Anmerkungen so kann ich mit dieser Art der Zuordnung. In einer native-Abfrage, die ich nicht verwenden kann new rs.rado.leo.mypackage.MyVO(...). Ich bekam folgende Fehlermeldung:

Verursacht durch:

org.springframework.data.mapping.PropertyReferenceException: No property findAllOfMyVO found for type MyEntity!

Nehme ich an, dass meine Frage klar ist. Wenn nicht, lass es mich wissen, damit ich Bearbeiten kann meine Frage stellen.

Vielen Dank im Voraus!

InformationsquelleAutor LeoRado | 2017-09-12
Schreibe einen Kommentar