Spring Data JPA: Ultimate Guide to Custom Queries with @Query Annotation

Поділитися
Вставка
  • Опубліковано 24 вер 2019
  • In this video, I will show you how to define and use custom queries with Spring Data JPA. You will learn how to execute JPQL and native queries, use an expression language in your queries and execute queries that INSERT, UPDATE, or REMOVE records.
    But before we start, if this is your first time here, and you want to learn how to create your entity mappings with ease, build incredible efficient persistence layers with Hibernate and all types of other Java persistence related stuff, start now by subscribing and clicking the bell, so you don't miss anything.
    Derived queries are very comfortable to use as long as the queries are not too complicated. But as soon as you use more than 2-3 query parameters or need to define multiple joins to other entities, you need a more flexible approach. In these situations, you better use Spring Data JPA’s @Query annotation to specify a custom JPQL or native SQL query.
    If you like this video, please give me your thumbs up and share it with your friends and co-workers.
    Like my channel? Subscribe!
    ➜ bit.ly/2cUsid8
    Join the free Member Library:
    goo.gl/dtyIIC
    Read the accompanying post: thoughts-on-java.org/spring-d...
    Want to connect with me?
    Blog: www.thoughts-on-java.org/
    Twitter: / thjanssen123
    Facebook: / thoughtsonjava
    #JPA #Spring
  • Наука та технологія

КОМЕНТАРІ • 49

  • @MsPrettyg00d
    @MsPrettyg00d 3 роки тому +1

    Your instructions are clear and short👍. Thank you!

  • @DreamingWithEyesWide
    @DreamingWithEyesWide Рік тому

    Best videos about JPA- thanks for making them!!

  • @isurangaediriweera7073
    @isurangaediriweera7073 4 роки тому

    Your videos are really helpful. Thank you very much.

  • @luisdavidherreragarcia281
    @luisdavidherreragarcia281 3 роки тому

    thank you for sharing your knowledge !

  • @sunilcd2008
    @sunilcd2008 2 роки тому

    Thank you Thorben! Very well explained and pretty clear about each concept!

  • @4jilson
    @4jilson 4 роки тому +5

    Your videos are good, this deserves more likes and views.

  • @pisteuo_creciendo_juntos
    @pisteuo_creciendo_juntos 4 роки тому

    thank you, grettings from chile

  • @tiituma
    @tiituma 3 роки тому

    Thank you so much, this video helped a lot

  • @nishantbahri
    @nishantbahri 4 роки тому

    That was precise.

  • @paolofrancescosciammarella1420
    @paolofrancescosciammarella1420 2 роки тому

    thank u so much!

  • @surbhigangrade9251
    @surbhigangrade9251 5 днів тому

    Very well explanation, could you please provide the link for Guide to JPQL Query?

  • @MsPaulisa
    @MsPaulisa 4 роки тому

    How do you use a list parameter with columns that you want to select? I tried something like "select ?3 from products where category = ?1 and status = ?2" . And ?3 is a List with the columns that I want to select... but it does not work...

  • @ricardo.fontanelli
    @ricardo.fontanelli 3 роки тому +4

    The best videos about spring and jpa, really well organized and explained, pure gold thank you

    • @manuelkyle6591
      @manuelkyle6591 2 роки тому

      You prolly dont care but does anyone know of a method to get back into an Instagram account..?
      I was stupid lost the password. I would appreciate any assistance you can give me!

    • @jaggerowen4148
      @jaggerowen4148 2 роки тому

      @Manuel Kyle instablaster :)

    • @manuelkyle6591
      @manuelkyle6591 2 роки тому

      @Jagger Owen I really appreciate your reply. I found the site through google and I'm in the hacking process now.
      Takes a while so I will get back to you later with my results.

    • @manuelkyle6591
      @manuelkyle6591 2 роки тому

      @Jagger Owen it did the trick and I actually got access to my account again. Im so happy!
      Thank you so much you saved my account!

    • @jaggerowen4148
      @jaggerowen4148 2 роки тому

      @Manuel Kyle You are welcome :)

  • @vtdx4
    @vtdx4 3 роки тому

    when we bind parameters in case of my parameter is an object how can I bind one property of the object inside query. can I access it with dot notation

  • @kthun-v7c
    @kthun-v7c 18 днів тому

    0:00 Intro
    1:42 JPQL Queries
    4:18 Sorting
    5:52 Paginating Query Results
    6:49 SpEL Expressions for Entity Names & Advabced Like Expressions
    8:24 Native Queries
    9:53 Parameter Handling
    12:13 Modifying Queries
    13:00 Conclusion
    14:25 Thoughts on Java Library

  • @abhinavrayakwar6676
    @abhinavrayakwar6676 4 роки тому

    While updating or altering the table with paramerter , spring jpa add extra quotes in query " ' " this single quote help

  • @sonofgod00
    @sonofgod00 Рік тому

    Thanks

  • @NitrosS
    @NitrosS 3 роки тому

    insert is possible here? I'm looking for insertion

  • @varunraj1862
    @varunraj1862 9 місяців тому

    Great video.
    May i know how to reference the fields declared indide the entity using SPeL.
    It will be really helpful.

  • @lokeshmurukesh3386
    @lokeshmurukesh3386 3 роки тому

    can we do "select into" query in @Query ?

  • @ianwanjala8621
    @ianwanjala8621 8 місяців тому

    hey, this is very good content, but the link provided for accessing the free java thoughts materials is not working, could I get those materials?
    Thanks again!

  • @ursfren
    @ursfren 3 роки тому

    How to index pdf content by using spring-data?
    We will really appreciate if some one can answer this question.

  • @NitrosS
    @NitrosS 3 роки тому

    if you wanna insert use this:
    @Modifying
    @Query(value = "insert into author(first_name, last_name, version) values(?#{#author.firstName}, ?#{#author.lastName}, ?#{#author.version})",nativeQuery = true)
    void insert(@Param("author") Author author); //SpEL Expressions
    You have to use @Modifying
    and maybe @Transactional. There is another method to insert and it's the EntityManager.

  • @esperanzacutillasrastoll6722
    @esperanzacutillasrastoll6722 4 роки тому

    how do you do a left join with that? Thank you. With to related entities with a one to one relationship

    • @ThoughtsOnJava
      @ThoughtsOnJava  3 роки тому +1

      You can use all features of JPQL in your custom query. LEFT JOIN is one of them. Find out more here: thorben-janssen.com/jpql/

  • @senthilmurugangsm
    @senthilmurugangsm 4 роки тому

    How can we select few columns in @Query annotations and return the list of entities with only those specific columns as JSON. (Not all values of entity)

    • @ThoughtsOnJava
      @ThoughtsOnJava  4 роки тому +1

      Hi Senthil,
      you can only select an entity with all its attributes. If you want to select a subset, you need to use a DTO projection.
      I explain that in this video: ua-cam.com/video/IPRfz97-NqA/v-deo.html
      In the video, I only use Hibernate without Spring Data JPA. But you can apply the same approach using Spring.
      Regards,
      Thorben

    • @senthilmurugangsm
      @senthilmurugangsm 4 роки тому

      @@ThoughtsOnJava thanks for the response. Is any other way available by without creating another pojo class ?

  • @UTUBDZ
    @UTUBDZ 3 роки тому

    Guten Tag Janssen ! Can you give a hint on how to write a JPQL queries when the WHERE close contains objects (Ex: SELECT * FROM USERS WHERE userBooks.count(*) > 10)

    • @ThoughtsOnJava
      @ThoughtsOnJava  3 роки тому

      Is userBooks a managed association?
      If it is, you could use the size function to count the elements in it, e.g.: SELECT u FROM Users WHERE SIZE(u.userBooks) > 10

    • @UTUBDZ
      @UTUBDZ 3 роки тому

      ​@@ThoughtsOnJava Thank you very much for your reply.

  • @rajuTravelMemories
    @rajuTravelMemories 11 місяців тому

    Could u please help me on thi
    Caused by: java.lang.IllegalArgumentException: Can't compare test expression of type [CommodityEntity] with element of type [BasicSqmPathSource(materialId : Long)]

  • @memillin
    @memillin Рік тому

    12:06 It seems that named bind parameters are flipped.

  • @maheshlokavarapu9696
    @maheshlokavarapu9696 3 роки тому

    Could you please provide oracle r2dbc video series

  • @gamatossian
    @gamatossian 3 роки тому +1

    I think there's a small error there @ 12:00?
    @Param("lastName") String firstName, @Param("firstName") String lastName
    Assuming it should be:
    @Param("firstName") String firstName, @Param("lastName") String lastName

  • @amitdhakal1974
    @amitdhakal1974 3 роки тому

    But no customized delete option in the query

  • @MrProton2
    @MrProton2 4 роки тому

    How Spring Data JPA Native Querry worked with SELECT FOR UPDATE SKIP LOCKED ?

  • @chetanbhandari3033
    @chetanbhandari3033 4 роки тому

    Hi Video is too good pls provide github link for source code

  • @davincibaker
    @davincibaker Місяць тому

    WHAT ABOUT INSERTS ?

  • @treeteqs
    @treeteqs 4 роки тому

    what about @restresource

  • @yadigarcaliskan6453
    @yadigarcaliskan6453 7 місяців тому

    Why does spring try to overtake the industry? I don’t like

  • @chessmaster856
    @chessmaster856 7 місяців тому

    There is no complex query

  • @sidof8065
    @sidof8065 Місяць тому

    Thanks for the content ! how write jUnit test of class with enum properties. Like
    public interface HouseRepository extends PagingAndSortingRepository {
    Page findByHouseTypeContaining(HouseType houseType, Pageable pageable);
    }
    @Entity(name = "house")
    public class House {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "house_sequence")
    @SequenceGenerator(name = "house_sequence",sequenceName = "house_sequence",allocationSize = 1)
    private Long id;
    @Enumerated(STRING)
    private HouseType houseType;