kamil.rak
kamil.rak

Reputation: 1378

Can I query in hibernate via DTO/Entity not by single fields

I have a question regarding querying in hibernate. If there is a way to search without specifying an where cause explicitly?

So what I mean is: let's say I have a search form with 10 columns that are bound to my dto fields. So the user can fill some of them and left the rest as nulls. And now I would like to search only by fields that are specified (filled) and left the nulls behind (they doesn't matter).

So the query would be like this:

select e 
from entity e 
where e.entity = e.searchedCriteriaEntityGivenInDTO  

Or a better example via jpg: I'd like to have all sample entities without specifying "where number, where name, where firstanme", but over my dto by "where dtoFields". As mentioned the nulls should be ignored.

Thanks a lot in advance.

sample

[EDIT]: Thanks to Dragon I have a great solution how to do it, but I have one more question: What about I have 2 row's, I can search? My query should look like:

select e 
from example e, 
where (e.entity = example) OR (e.entity = example2);

I tried to put the

session.createCriteria(MyEntity.class).add(Example.create(myEntityExample))

into an OR-Predicate but it seems it does not work.

Any suggestions?

Upvotes: 1

Views: 473

Answers (1)

Dragan Bozanovic
Dragan Bozanovic

Reputation: 23562

No, you can't do it with DTOs, but you can use a prototype (example) entity instance for it:

MyEntity myEntityExample = new MyEntity();
myEntityExample.setNumber(12);
myEntityExample.setName("AA");
myEntityExample.setFirstName("BB");
List<MyEntity> results = session.createCriteria(MyEntity.class)
    .add(Example.create(myEntityExample))
    .list();

Upvotes: 1

Related Questions