У меня есть два класса A и B:
Это класс A
class A{
private int id;
private String name ;
private String emailId;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy="aList")
List<B> bList;
// getter and setters
}
Это класс B
class B{
private int id;
private int AId ;
private String location;
@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
List<A> aList;
// getter and setters
}
И это метод класса Dao, с помощью которого я пытаюсь получить объединенные данные.
public List<A> getA() {
Session session = entityManagerFactory.unwrap(SessionFactory.class).openSession();
CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaQuery<A> criteria = builder.createQuery(A.class);
Root<A> root = criteria.from(A.class);
Join<A, B> joinList = root.join("bList", JoinType.LEFT);
try{
Predicate filters = builder.and(builder.equal(joinList.get("AId"),root.get("id")),
builder.equal(root.get("name"), "xxx"));
criteria.where(filters);
List<A> aList = (List<A>)session.createQuery(criteria).getResultList();
return aList;
}catch(Exception e){
e.printStackTrace();
}
return null;
}
Но каждый раз, когда он создает другую таблицу, и я не хочу, чтобы дополнительная таблица создавалась, скорее я хочу применить соединение как в mysql, т.е. без создания дополнительной таблицы. Как это сделать ??
Спасибо