Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JPA query for DTYPE

Tags:

hibernate

jpa

I have a single table which is generated from two jpa entities (inheritance). So we have a DTYPE column generated in the database table which has entity name has values.

How do I write a jpa query to fetch data for any given entity. i.e DTYPE = 'A'?

I just tried using DTYPE in jpa query but as expected I got an error "Could not resolve property". Please let me know how to write this query.

Note - I dont want to use native query.

Update:

I have class A and subclass AA which extends A. DTYPE has two values A and AA.

When I query for A, I get all the A plus AA entities. How to exclude AA when I query for A?

like image 929
tom_987 Avatar asked Jan 15 '10 10:01

tom_987


2 Answers

Simply add a simple field dtype in your parent class.

@Column(insertable = false, updatable = false) private String dtype;

And so, you can use it in your JPQL query

like image 85
SCH Avatar answered Jan 03 '23 00:01

SCH


Assuming you have three entities:

  • Party (superclass)
  • Person (extends Party)
  • Organization (extends Party)

where the last two are the two entities you store with a discriminator column, your JPA-QL query should be as simple as:

select p from Person p

to get all people. JPA is smart enough to figure it out. Likewise you can do:

select p from Party p

and get all of them.

like image 21
cletus Avatar answered Jan 03 '23 00:01

cletus