NamedQuery是一个对象并将其与整数id

时间:2017-04-24 12:38:24

标签: java jpa hql jpql named-query

我有这种情况, 如果有人能帮我解决问题会很好。

@MappedSuperclass
public abstract class AbstractEntity implements Serializable, Cloneable {
    private int id;
}


public class A extends AbstractEntity{ //Both A and B Entities will store in Table A in Database(in the same table)
    //some code
}

public class B extends A{
    //some fields
}

public class C extends AbstractEntity{  //Data will be Store in Table C in database and there's a column name b_id as integer to hold the id of Entity b
    B b;
}

现在我在NamedQuery中有这样的查询

query="SELECT e FROM C e WHERE e.b= :vid"
//int vid;

问题是JPA抛出异常原因'b'是类型变量'B'而'vid'是整数变量。

我不能说,

query="SELECT e FROM C e WHERE e.b.id= :vid"

因为'b'是扩展'A'而'''是扩展AbstractEntity,这是我的想法,因为我尝试了它并获得了一些错误'参数值[601]与预期类型不匹配'// 601是id数据库中表'A'中的实体。

1 个答案:

答案 0 :(得分:0)

将映射的超类中的getter添加到id字段,以便您的类可以访问此字段。使您能够引用查询中的字段。

@MappedSuperclass
public abstract class AbstractEntity implements Serializable, Cloneable {
    private int id;

    public int getId() { return id; }
}