我有两节课:
public class User {
    private int id;
    private String Name;
    private Set<Contact> Contacts = new HashSet<Contact>();
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    ...
    @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
    public Set<Contact> getContacts() {
        return
    }
}
和
public class Contact {
    private int id;
    private String nick;
    private int age;
    private User owner;
    ...
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "UserId")
    public User getOwner() {
        return owner;
    }
}
当我打电话时:
session.createCriteria(Contact.class).add(Restrictions.eq("owner.id", 2)).list();
一切都很好,但是如果我将用户的“id”属性名称更改为“Id”,代码编译但是:
session.createCriteria(Contact.class).add(Restrictions.eq("owner.Id", 2)).list();
将向我抛出“无法解析 property owner.Id”异常。
我知道在 Java 中我应该以小写字母开头变量名,但我只想知道为什么 Hibernate 会以这种方式运行。
谢谢