Home > Net >  Get data from join table hibernate many to many
Get data from join table hibernate many to many

Time:10-12

I have this diagram:

table diagram

and I want to filter by the employees that have a project.

In normal SQL I will go like this

select * from employees e 
join employee_projects ep on ep.employee_id = e.id

How can I achieve the same with Hibernate?

I tried using criteria builder and specifications but I can't get the data from the join table.

CodePudding user response:

You can select all employees that have a project like this

em.createQuery(
    "SELECT e FROM Employee e JOIN e.projects p WHERE p IS NOT NULL", Employee.class).getResultList()

CodePudding user response:

You can join tables using join method of root object.

try something like this below

I have used it for one to many relation

Join<Post, Tag> join = root.join("tags", JoinType.INNER);
            Predicate tagPredicate = criteriaBuilder.like(join.get("name"), "%"   search   "%");

for many to many relation,

Join<Post, Tag> postTagsTable = root.join("tags", JoinType.INNER);
            return postTagsTable.<String>get("name").in(tagNames);

here I have tags field in Post entity, which is used inside join

  • Related