Java >> Java tutorial >  >> Tag >> native

Hibernate Tips:Sådan kortlægger du native forespørgselsresultater til en POJO

Hibernate Tips er en række indlæg, hvor jeg beskriver en hurtig og nem løsning på almindelige Hibernate-spørgsmål. Hvis du har et spørgsmål, som du gerne vil have mig til at svare på, bedes du efterlade en kommentar nedenfor.

Spørgsmål:

Min forespørgsel er for kompleks til JPQL, og jeg er nødt til at bruge en indbygget forespørgsel. Hvad er den nemmeste måde at kortlægge resultatet af forespørgslen til en POJO?

Løsning:

JPA understøtter @SqlResultSetMapping s, som du kan bruge til at tilknytte forespørgselsresultatet til en POJO. Følgende kodestykke viser et eksempel på en sådan kortlægning.

@SqlResultSetMapping(name = "BookValueMapping", 
		classes = @ConstructorResult(
				targetClass = BookValue.class, 
				columns = {@ColumnResult(name = "title"),
					   @ColumnResult(name = "date")}
				)
)

@ConstructorResult annotation definerer et konstruktørkald af klassen BookValue. @ColumnResult annoteringer definerer, hvordan kolonnerne i resultatet skal afbildes til konstruktørens parametre. I dette eksempel vil Hibernate udføre et konstruktørkald med værdien af ​​titlen kolonne som den første og værdien af ​​datoen kolonne som den anden parameter.

Når du angiver navnet på @SqlResultSetMapping som den anden parameter til createNativeQuery metode, vil Hibernate anvende tilknytningen til forespørgselsresultatet. Du kan bruge det til at kortlægge resultaterne af alle forespørgsler, der returnerer mindst de parametre, der er defineret af @ColumnResult anmærkninger.

BookValue b = (BookValue) em.createNativeQuery("SELECT b.publishingDate as date, b.title, b.id FROM book b WHERE b.id = 1", "BookValueMapping").getSingleResult();


Få flere oplysninger:

@SqlResultSetMappings er en kraftfuld funktion, som giver dig mulighed for at definere komplekse tilknytninger til native forespørgselsresultater. Du kan læse mere om indbyggede forespørgsler og @SqlResultSetMappings i min "Native Queries with Hibernate" e-bog, som du kan downloade fra det gratis Thoughts on Java Library.


Dvaletipsbog







Få flere opskrifter som denne i min nye bog Hibernate Tips:Mere end 70 løsninger på almindelige dvaleproblemer.

Den giver dig mere end 70 klar-til-brug opskrifter til emner som grundlæggende og avancerede kortlægninger, logning, Java 8-understøttelse, caching og statisk og dynamisk definerede forespørgsler.

Få det nu!



Java tag