Reputation: 9
I want to get all the values from a particular column in JPA and store all values into a list. currently, I am using the below approach but I am getting records in something else format.can someone please help me out
Query q1 = factory.createNativeQuery("select * from booking_attendee where booking_id="+id);
List<String> em1=q1.getResultList();
return em1;
query otput
em=[[Ljava.lang.Object;@68606667, [Ljava.lang.Object;@2cd7f99a, [Ljava.lang.Object;@137a5a5, [Ljava.lang.Object;@a45cc1c, [Ljava.lang.Object;@61fdc06d, [Ljava.lang.Object;@72f5eee1, [Ljava.lang.Object;@4e536797]
Upvotes: 0
Views: 2615
Reputation: 602
If you want to create a native query for this, it is more about how to solve this in SQL. You do not say SELECT *
which means all columns. You would have to say SELECT your_column_name
to select only a specific column.
Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee");
List<String> em1 = q1.getResultList();
The WHERE
clause could and should be defined with the parameter binding of JPA. There are several advantages concerning performance and SQL injection.
Named parameter binding is special to the persistence provider (e.g. Hibernate). The common way for JPA is using ?
to let your code be portable to other providers.
Query q1 = factory.createNativeQuery("SELECT your_column FROM booking_attendee b WHERE b.booking_id = ?");
q1.setParameter(1, id);
List<String> em1 = q1.getResultList();
Native queries offer the possibilities to use original SQL. Like this, some features which are specific for your database could be used with this. Nevertheless, if you do not have very specific SQL code, you should also have a look in JPQL, the specific query language of JPA, and the JPA Criteria API which offers advantages when you want to refactor your code, shows errors during compile time and makes the dynamic creation of queries easier.
Upvotes: 1