2013-10-22 86 views
0

所以我想对两个ID从连接我的两个实体比较,嗯,我想更好的解释将是,如果我表现出UA码从实体比较ID HQL

OfferOrder.java

@Data 
@Entity 
@Table(name = "offer_order", schema = "srp") 
@SequenceGenerator(name = "sequence_generator", sequenceName = "srp.offer_order_seq", allocationSize = 1) 
@EqualsAndHashCode(callSuper = false, exclude = { "offerOrderProjectRel", "associatedOrder" }) 
@ToString(callSuper = true) 
@NoArgsConstructor 
public class OfferOrder extends BaseEntity { 
[...] 

    @OneToMany(mappedBy = "pk.offerOrder") 
    private Set<OfferOrderProjectRel> offerOrderProjectRel = new HashSet<OfferOrderProjectRel>(); 
[..] 
} 

的ID是BaseEntity

@Id 
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequence_generator") 
protected Long id; 

,我要这个ID与我的ID从OfferOrderProjectRel

比较
@Data 
    @Entity 
    @Table(name = "offer_order_project_rel", schema = "srp") 
    @AssociationOverrides({ 
      @AssociationOverride(name = "pk.offerOrder", 
        joinColumns = @JoinColumn(name = "offer_order_id")), 
      @AssociationOverride(name = "pk.project", 
        joinColumns = @JoinColumn(name = "project_id")) }) 
    @EqualsAndHashCode(callSuper = false) 
    @ToString(callSuper = true) 
    @NoArgsConstructor 
    public class OfferOrderProjectRel { 

     @EmbeddedId 
     private OfferOrderProjectRelId pk = new OfferOrderProjectRelId(); 

     @Transient 
     @NotNull 
     private OfferOrder offerOrder; 

} 

从OfferORderProjectRelId

@Embeddable 
@EqualsAndHashCode(callSuper = false) 
public class OfferOrderProjectRelId implements Serializable { 

    @ManyToOne 
    private OfferOrder offerOrder; 

} 

有embeddedID所以之后我显示ü重要的东西(:P)的IM创造问题冬眠

private static final String SELECT_OOPR_TO_SEND = "SELECT R " + 
                "FROM OfferOrderProjectRel R, OfferOrder O, Project P " + 
                "WHERE R.project.id = P.id and O.id = R.offerOrder.id " + 
                "and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')" ; 

正如你所看到的IM连接的另一个实体存在,但一旦我获得通过这一点,我将能够做另一个我认为。

所以,当我劳克这个的HQL我得到errror

org.hibernate.QueryException:无法解析属性:的offerOrder(或项目): pl.srp.beans.schema .srp.OfferOrderProjectRel [SELECT R FROM pl.srp.beans.schema.srp.OfferOrderProjectRel R, pl.srp.beans.schema.srp.OfferOrder O,pl.srp.beans.schema.srp.Project P WHERE R.project.id = P.id and O.id = R.offerOrder.id and O.type = 'ORDER'and(P.status ='PENDING'or P.stat us ='PROTECTED')]

我也尝试过O = R.offerOrder等。所以我的问题呢?

回答

0

您需要公共getter和setter方法为offerOrder,没有一个getter私有变量不能被称为

+0

啊我忘了提及的getter和setter offerOrder等都是全自动制作 – ojciecmatki

+0

反正我得到它,但是,使用R .pk.offerOrder。感谢您的回答;) – ojciecmatki