我有一個自我連接查詢,看起來像這樣,SqlResultSetMapping與自我連接表
select t1。 ,t2。從表t1 左外側上t2.LFT < t1.LFT 和t2.RGT加入表t2> t1.RGT AND t2.REG_CODE_PAR = 'ALL' AND t1.STATUS_CODE = 'A' AND 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」)查詢,我得到在兩個
的第一和返回的對象陣列的第二元件完全相同的對象。 即使我創建一個名爲TreeSelf類是相同的樹,並用它作爲第二
EntityResult而是採用了相同的entityClass有2個EntityResults,我會得到相同的
結果。
有人能指出配置有什麼問題嗎?
您的意思是打印'select t1。*,t2。*'而不是'select t1。,t2.'?看起來格式化程序絆住了你。 – 2010-07-23 06:03:36