2014-09-04 61 views
1

我想通过限制添加到Hibernate中的条件。 我有两个表的事件和MainEvent的关系一对多(MainEvent有很多事件)。org.hibernate.QueryException:不是关联

final Criteria criteria = getCurrentSession().createCriteria(
      Event.class); 
    criteria.createAlias("mainEvent.date", "deadline"); 
    criteria.addOrder(Order.asc("deadline")); 
    return criteria.list(); 

当我尝试运行此它给了我下面的错误:

org.hibernate.QueryException:不是关联:日期。

MainEvent实体:

@Entity 
@Table(name = "MAIN_EVENT") 
public class MainEventEntity { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "MAIN_EVENT_ID") 
    private int id; 

    @Column(name = "MAIN_EVENT_DATE") 
    private Date date; 

    @OneToMany(mappedBy = "mainEvent", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) 
    private List<EventEntity> events = new ArrayList<EventEntity>(); 

} 

事件实体:

@Entity 
@Table(name = "EVENT") 
public class EventEntity { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name = "EVENT_ID") 
    private int id; 

    @ManyToOne(cascade = CascadeType.PERSIST) 
    @JoinColumn(name = "MAIN_EVENT_ID", nullable = false) 
    private MainEventEntity mainEvent; 

} 
+1

发表您的实体代码 – 2014-09-04 09:52:56

回答

3

按照API来Criteria.createAlias,你不能关联的领域创建别名的关联。

createAlias 

Criteria createAlias(String associationPath, 
        String alias) 
        throws HibernateException 
Join an association, assigning an alias to the joined association. 



Parameters: 
associationPath - A dot-seperated property path 
alias - The alias to assign to the joined association (for later reference). 
Returns: 
this (for method chaining) 
+2

本来有可爱的,看看有什么我们应该在上下文中所做的那样,而不是一个快速的膏会从文档。 – 2016-02-26 16:16:50

0
final Criteria criteria = getCurrentSession().createCriteria(
     Event.class); 
criteria.createAlias("mainEvent", "me"); 
criteria.addOrder(Order.asc("me.deadline")); 
return criteria.list(); 
相关问题