У меня есть объект, который содержит список из его полей, объект отображается в БД.Я пытаюсь создать запрос, который выберет несколько полей из объекта и упомянутого выше списка.
Отображение объекта:
@Entity
@Table(name="buys")
@PrimaryKeyJoinColumn(name="buy_id")
public class Buy extends DomainObject implements Serializable {
@Column(name = "buy_name")
private String buyName;
@OneToMany( cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name="buy_id", referencedColumnName = "buy_id")
private List<InsersionOrder> insertionOrders;
//other fields omitted
}
Используемый мной запрос:
"select new com.dtos.domainObjects.BuyDTO(b.id, b.buyName, b.insertionOrders) from Buy b where b.buyGroupId = :groupId and b.isDeleted = false"
При выполнении этого спящего режима (мой поставщик JPA) генерирует ошибочный запрос:
Hibernate: select buy0_.buy_id as col_0_0_, buy0_.buy_name as col_1_0_, . as col_2_0_ from buys buy0_ inner join domain_objects buy0_1_ on buy0_.buy_id=buy0_1_.id inner join insertion_orders insertiono1_ on buy0_.buy_id=insertiono1_.buy_id inner join domain_objects insertiono1_1_ on insertiono1_.io_id=insertiono1_1_.id where buy0_.buy_group_id=? and buy0_1_.is_deleted=0
Поле InsertionOrder также наследуется от DomainObject.
Если я опускаю список и выбираю только «простые» поля из объекта Buy (т. Е. Id, name), запрос работает нормально.
Чего мне не хватает?
Спасибо.