How to Return DTOs from Native Queries with Spring Data JPA
ฝัง
- เผยแพร่เมื่อ 5 ก.ย. 2024
- When using Spring Data JPA, you are used to derived and custom queries that return the result in your preferred format. A typical example is a DTO projection, which is the most efficient one for read-only operations. To use it in a derived or custom JPQL query, you only need to change the return type of your repository method to your DTO class or interface. But when using a native query, some limitations make DTOs a little harder to use.
Links mentioned:
Composite Repositories - Extend your Spring Data JPA Repository: thorben-jansse...
How to Use Named Queries with Spring Data JPA : thorben-jansse...
Result Set Mapping: Constructor Result Mappings
thorben-jansse...
Like my channel? Subscribe!
➜ bit.ly/2cUsid8
Join the free Member Library:
goo.gl/dtyIIC
Read the accompanying post: thorben-jansse...
Want to connect with me?
Blog: thorben-jansse...
Twitter: / thjanssen123
Facebook: / thorbenjanssenofficial
Linkedin: / thorbenjanssen
#SpringDataJPA #ReturnDTOs #NativeQuery
I was getting this ConverterNotFoundException, searched alot about this but didn't find anything specific. Found this video which is extremely helpful
This tutorial is super concise and accurate. It accurately answered the questions most likely to be asked by fresh learners like me..
A good tutorial that makes things clear and simple. It helped me to solve a problem. One thing: in the repository definition of the query I had to use (@Param("id") Long id) instead of (Long id) to make it work. 👍
and yes, I subscribed to the channel 🙂
wao I did save a lot of time just doing the first scenario, making an interface for getting the data.
thanks a lot
Good work, thanks
Thanks my friend, just what I needed
GOD LEVEL TOUTORIAL
YOU ARE AMAZING!!!!! THANKS!!!!!
Good content but it's complex. JPA can execute with native query to return the entity class. Then I can map the enity class to the dto.
Unfortunately, the entire entity graph of your entity class is loaded before you map it to your dto. With the approach presented, the projection on the fields you need in your dto are directly made during the SQL query. So your query becomes faster.
This is the good things, but I didn't get how it works, I need to try it in ide. Maybe in next video if is possible to show how it works in IDE with real coding for better understanding 🤔
Thank you very much
kkk, mais uma vez precisei assistir esse vídeo.
Superb video !! Thanks a lot. This helped me a lot.
Good Morning, I have a scenario to fetch the data from teradata sql views by using spring-boot-data-jpa with no primary key column in database.
1. When using entity it is expecting primary key but we don't have the PK ID column in database.
Existing behaviour of data mapping:
They joined multiple views and getting the data and mapping DTO class by using RowMapper with spring-boot < 3.x
Expected:
After >3.x spring-boot version upgrade data binding is not happening.
If you have any idea that would be great helpful to me?? Thanks
Note:I have done the all the code change related to JPA but getting the Exception like ID column not found in database because as mentioned don't have Id column in views..
tell me when query gives you list of names then how to get that list?
Thanks man you save my lots of time ❤
Thanks alot sir, you saved my day
Amazing! Thank u so much!
Thank you, so much sir.
If I use namednativequery with custom DTO using sqlresultsetmapping. Is it possible to perform pagination for that?
Hello, Can you please make a tuto or blog on - how to do the scalar projection? Got few lines in tour blog but not details implementation, I am talking about the object[ ] way to implement DTO
p.first_name as firstName. But what would be the alias for a nested object? For example, address.street as {what?} (assuming that PlayerName references Address)?
Muito Obrigado pela aula.
@Thorben Can I export these Repos as a Jar and use them in different projects?
I love your content :)
Thank you.
sorry, i fail with field id data type bigint sqlserver -> data type java Long. Exception: Could not locate appropriate constructor on class: xxxDto
Hi, Thorben, ich mag deine Videos sehr und habe normal auch kein Problem, diese in englischer Sprache zu hören, aber manchmal wäre es auch cool sie zusätzlich in deutsch anschauen zu können. vll. denkst du mal darüber nach auch deutsche Untertitel einzubauen. Mach Weiter so!
Walker Brenda Rodriguez Ronald Taylor Betty
Jones Sandra Garcia Dorothy Walker Margaret
White Larry Martinez Melissa Johnson Nancy
That's too much code.
Just use " select new MyPojo( a.col1, a.col2... ) from Table a"