org.hibernate.QueryException: 不是关联

Jon*_*nes 4 hibernate criteria

我想通过限制在 Hibernate 中的条件添加订单。我有两个表 Event 和 MainEvent 与一对多的关系(一个 MainEvent 有很多事件)。

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

当我尝试运行它时,它给了我以下错误:

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

主事件实体:

@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>();

}
Run Code Online (Sandbox Code Playgroud)

事件实体:

@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;

}
Run Code Online (Sandbox Code Playgroud)

Cha*_*nya 5

根据Criteria.createAlias的 API ,您只能为关联创建别名,而不能为关联的字段创建别名。

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)
Run Code Online (Sandbox Code Playgroud)

  • 很高兴看到我们应该在上下文中做什么,而不是从文档中快速粘贴。 (7认同)