我有两节课:
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 会以这种方式运行。
谢谢