通过反射获取getter方法无法获取字段值

14

我正在尝试通过外键来过滤结果集:

createCriteria(Person.class).add(Restrictions.ne("position", 1L)).list()

但是出现了这个异常:org.hibernate.PropertyAccessException: could not get a field value by reflection getter of com.example.model.Position.id

以下是必要的JPA实体(已经精简到必要字段):

@Entity
@Table
public class Person {
    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne
    @JoinColumn(nullable = false)
    @ForeignKey(name = "person_position_fkey")
    private Position position;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Position getPosition() {
        return position;
    }

    public void setPosition(Position position) {
        this.position = position;
    }
}

@Entity
@Table
public class Position {
    @Id
    @GeneratedValue
    private Long id;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}

4
尝试使用 Restrictions.ne("position.id", 1L) 。该语句的意思是筛选出"position.id"不等于1L的结果。 - Yurii Shylov
谢谢!那解决了我的问题。你能把它作为答案提供吗?这样我就可以接受它了。 - dtrunk
1个回答

26
尝试使用Restrictions.ne("position.id", 1L)

1
只翻译文本内容:加上解释会更好 - Kukeltje

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接