【问题标题】:How criteria restrictions for many to many mapping in hibernate enum休眠枚举中多对多映射的标准限制
【发布时间】:2017-07-20 10:02:06
【问题描述】:

枚举类

public enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,SATURDAY }

模型类

@Fetch(FetchMode.SUBSELECT)
@ElementCollection(targetClass = Days.class, fetch = FetchType.EAGER)
@JoinTable(name = "bus_days", joinColumns = @JoinColumn(name = "bus_master_id"))
@Column(name = "day", nullable = false)
@Enumerated(EnumType.ORDINAL)
private Set<Days> days = new HashSet<Days>();
// getter setter

休眠查询出错:

Criteria criteria = null;
 criteria = session.createCriteria(Model.class)
          .add(Restrictions.eq("fromCity.id", fromCity))
          .add(Restrictions.eq("toCity.id", toCity))
          .add(Restrictions.eq("days", days.ordinal()));//error in this line
            return (List<Model>) criteria.list();

在 Eclipse 控制台中获得的错误;

Caused by: java.sql.SQLException: No value specified for parameter 3
ERROR: No value specified for parameter 3
org.hibernate.exception.SQLGrammarException: could not extract ResultSet

帮帮我,

【问题讨论】:

    标签: java hibernate enums


    【解决方案1】:

    你不应该用days.ordinal()比较,你只需要用days比较,hibernate自己把它转换成数字。

    【讨论】:

    • thanq 兄弟
    猜你喜欢
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2011-04-12
    • 2011-04-07
    相关资源
    最近更新 更多