加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读