@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'中的实体。
答案 0 :(得分:0)
将映射的超类中的getter添加到id字段,以便您的类可以访问此字段。使您能够引用查询中的字段。
@MappedSuperclass
public abstract class AbstractEntity implements Serializable, Cloneable {
private int id;
public int getId() { return id; }
}