java.lang.IllegalArgumentException:未定义的过滤器参数[p1]
发布时间:2020-12-15 04:35:24 所属栏目:Java 来源:网络整理
导读:我正在尝试执行Hibernate Filter. 这是我的POJO课程: @Entity@Table(name="flight")@FilterDef(name="f1",parameters=@ParamDef(name="status",type="String"))@Filter(name="f1",condition="status=:p1")public class Flight { @Id @Column(name="flightno
我正在尝试执行Hibernate Filter.
这是我的POJO课程: @Entity @Table(name="flight") @FilterDef(name="f1",parameters=@ParamDef(name="status",type="String")) @Filter(name="f1",condition="status=:p1") public class Flight { @Id @Column(name="flightno") private int flightNumber; @Column(name="src",length=10) private String source; @Column(name="dest",length=10) private String destination; @Column(name="status",length=10) private String status; //setter & getters } 这是我的Main类代码: public static void main(String[] args) { //code for getting SessionFactory Object Session session=factory.openSession(); Transaction tx=session.beginTransaction(); Query query=session.createQuery("from Flight f"); Filter filter=session.enableFilter("f1"); filter.setParameter("p1","DELAYED"); List list=query.list(); Iterator itr=list.iterator(); while(itr.hasNext()) { Flight f=(Flight)itr.next(); System.out.println("FLIGHT NO:"+f.getFlightNumber()); System.out.println("SOURCE :"+f.getSource()); System.out.println("DESTINATION :"+f.getDestination()); System.out.println("STATUS :"+f.getStatus()); session.close(); } 但我是这样的输出: 线程“main”中的异常java.lang.IllegalArgumentException:未定义的过滤器参数[p1] 解决方法
在这种情况下的错误消息有点误导. Hibernate试图告诉你filter参数配置错误.
当我使用Long进行类似的映射时遇到了这个问题.问题似乎与ParamDef的类型定义有关.由于某种原因,在type参数中使用类名不适用于Long和String. 如果通过使用小写“long”或“string”将其指定为“基元”,它会正确映射类型 @ParamDef(name="status",type="string") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读