У меня есть запрос с самостоятельным присоединением, который выглядит следующим образом:SqlResultSetMapping with self join table
выберите t1. , t2. из таблицы t1 левое внешнее соединение таблицы t2 на t2.LFT < t1.LFT и t2.RGT> t1.RGT И t2.REG_CODE_PAR = 'ALL' И t1.STATUS_CODE = 'A' И t2.STATUS_CODE = 'A'
Я использую @NamedNativeQuery с отображением результирующего набора, чтобы получить результат.
@NamedNativeQuery(
name="findTree",
query="..... the query above",
resultSetMapping = "regionT")
следующий результат установить отображение
@SqlResultSetMapping(name = "regionT" , entities ={
@EntityResult(
entityClass = Tree.class
fields = {
@FieldResult(name = "regCode", column = "REG_CODE")
@FieldResult(name = "rgt", column = "RGT"),
@FieldResult(name = "lft", column = "LFT"),
@FieldResult(name = "name", column = "NAME"),
@FieldResult(name = "regCodePar", column = "REG_CODE_PAR"),
@FieldResult(name = "statusCode", column = "STATUS_CODE")
}
),
@EntityResult(
entityClass = TreeSelf.class
fields = {
@FieldResult(name = "regCode1", column = "REG_CODE")
@FieldResult(name = "rgt1", column = "RGT"),
@FieldResult(name = "lft1", column = "LFT"),
@FieldResult(name = "name1", column = "NAME"),
@FieldResult(name = "regCodePar1", column = "REG_CODE_PAR"),
@FieldResult(name = "statusCode1", column = "STATUS_CODE")
}
)
})
Класс объект содержит выглядит следующим образом.
@NamedNativeQuery(...)
@SqlResultSetMapping(...)
@Entity
@Table(name = "table")
public class Tree implements Serializable {
@Id
@Column(name = "REG_CODE")
private String regCode; ... ..getters and setters...}
При запуске запроса с помощью em.createQuery («findTree»), я получаю один и тот же объект в обоих
1-й и 2-й элементы возвращенного массива объектов. Даже если я создаю класс под названием TreeSelf, который идентичен Дерево и использовать его в качестве 2-го
EntityResult вместо того, 2 EntityResults используя тот же entityClass, я получаю то же
результат.
Может кто-нибудь указать, что случилось с конфигурацией?
Возможно, вы имели в виду 'select t1. *, T2. *' Вместо 'select t1., T2.'? Похоже, что форматирование сработало. –