2014-09-04 4 views
1

Я хочу добавить заказ, ограничив критерии в Hibernate. У меня есть две таблицы Event и MainEvent с отношением One To Many (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

размещать код предприятия –

ответ

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

Был бы прекрасно, чтобы увидеть, что мы должны были сделать в контексте, а не быстрая пасты из документации. –

0
final Criteria criteria = getCurrentSession().createCriteria(
     Event.class); 
criteria.createAlias("mainEvent", "me"); 
criteria.addOrder(Order.asc("me.deadline")); 
return criteria.list(); 
Смежные вопросы