在我的项目中,我在 eclipse Indigo 中使用 JPA2 和 Hibernate。
我有一个抽象 BaseEntity 类,它提供了我项目中所有实体所需的一些字段。因此,这个类被我在项目中使用的所有其他实体扩展。
BaseEntity 中的字段之一是布尔字段deleted
,用于将条目标记为已删除(不允许从数据库中物理删除对象)。现在,当我尝试在子类中设置命名查询并在 WHERE 子句中使用“NOT u.deleted”时,我从编译器收到以下错误消息:
无法解析状态字段路径“r.deleted”为有效类型。
在 BaseEntity 的代码下方:
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
protected Long id;
@Version
protected int version;
@Column(nullable = false, columnDefinition = "boolean default false")
protected boolean deleted;
public boolean isDeleted() {
return deleted;
}
public boolean getDeleted() { // for test-purposes introduced both - isDeleted() & getDeleted()
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
// some other attributes, getters & setters
}
继承类的代码:
@Entity
@Table(name = "User")
@NamedQueries({
@NamedQuery(name = "getAllUsers", query = "SELECT u FROM User u WHERE NOT u.deleted")
})
public class User extends BaseEntity {
// some other fields and getter/setters
}
任何猜测可能是什么问题?
编辑:根据下面的评论更新代码。