2013-01-24 76 views
1

我有两个实体加载关联关系:与自定义查询

public class Rank{ 
    Short value; 

    @ManyToOne(fetch=FetchType.LAZY) 
    Picture pic; 
    ... 
} 


public class Picture{ 
     String url; 
     Long rank; // sum of all ranks' values 
} 

有没有办法通过查询SELECT SUM(value) from ranks where pic = ?加载Picturerank场?

回答

0

你需要在图片实体和排名列表返回所有的总和居

@Entity 
public class Rank{ 
    Short value; 

    @ManyToOne(fetch=FetchType.LAZY) 
    Picture pic; 

    public void setPic(Picture p){ 
     pic = p; 
     p.addRank(this); 
    } 

    .. 
} 


@Entity 
public class Picture{ 
    String url; 

    @OneToMany(fetch=FetchType.LAZY) 
    List<Rank> ranks; 

    Long rank; // sum of all ranks' values 

    public void addRank(Rank r) { 
     ranks.add(r); 
    } 

    public Long getRank() { 
     for(Rank r : this.ranks) { 
      this.rank += r.getLongValue(); 
     } 

     return this.rank; 
    } 

    ... 
} 
的方法