Я ищу способ запросить конкретные столбцы и иметь посторонний объект, присутствующий в корневом объекте, с помощью CriteriaBuilder. Вот контекст: У меня есть EntityAКак я могу запросить конкретные столбцы из 2 таблиц внутри моих объектов, используя JPA 2.0?
@Entity
@Table(name = "ENTITY_A")
public class EntityA {
int id;
int entityBKey;
EntityBObject entityBObject;
int AColumn1;
int AColumn2;
@Basic
public Long getEntityBKey() {
return entityBKey;
}
@ManyToOne
@JoinColumn(name = "ENTITY_B_FK")
public EntityBObject getProgramType() {
return entityBObject;
}
@Basic
@Column(name = "COLUMN_1")
public String getAColumn1() {
return AColumn1;
}
...
}
Тогда я EntityB
public class EntityB {
int id;
int BColumn1;
int BColumn2;
...
}
Теперь я хочу, чтобы запросить столбец AColumn1 из EntityA и колонки BColumn1 от EntityB, при этом имея объект EntityB внутри EntityA. Как я могу это достичь?
Как изменить следующее, чтобы получить частичный EntityA с EntityB внутри?
public List<EntityA> findAll() {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<EntityA> criteria = cb.createQuery(EntityA.class);
Root<EntityA> root = criteria.from(EntityA.class);
criteria.select(root);
return em.createQuery(criteria).getResultList();
}
Спасибо!
Редактировать @Tassos Bassoukos Да, это то, что я в конечном итоге делает, но это было бы получить действительно грязный, когда запрос становится более сложным. Пример. Потяните клиентов с их заказами, с элементами для каждого заказа. Было бы так много java для достижения этого, хотя я мог бы быть автоматизирован, поэтому мой объект автоматически заполняется.
public List<EntityA> findAll() {
ArrayList<EntityA> result = new ArrayList<>();
Query q = em.createQuery("select eA, eB, from EntityA eA, EntityB eB where eA.key = eB.key");
@SuppressWarnings("unchecked")
List<Object[]> abc = q.getResultList();
for (Object[] array : abc) {
EntityA eA = (EntityA) array[0];
EntityB eB = (EntityB) array[1];
eA.setEntityB(eB);
result.add(pe);
}
return result;
}
Будет что-то вроде [этого] (http://stackoverflow.com/questions/6877857/jpa-query-that-returns-multiple-entities/6880396#6880396) сделать трюк? –
@TassosBassoukos No:/То, что я закончил делать (отредактированный пост выше), но я ищу способ автоматизировать популяцию подэлементов, я также не хочу создавать дополнительные классы или конструкторы. Это умело? – user3850453