我有以下实体类。我可以将注释放在成员变量声明的顶部或 getter 和 setter 的顶部。
当我将注释放在成员变量声明附近时,它将保存该变量的值(而不是 getter 返回的值),如果我将注释放在 getter 附近,它将保存 getter 返回的值(而不是变量的值)。这一切都很好。
我的问题是,在持久化的同时,当我们将注释放在成员变量附近时,hibernate如何能够访问成员变量值,尽管它被声明为私有(private)。?
@Entity
@Table(name="USERS")
public class Users {
@Id @GeneratedValue(strategy=GenerationType.AUTO)
private int userId;
//This will save only value of userName no mater what getter returns
@Column(name="user_name")
private String userName;
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
//Putting @Column(name="user_name") here will save value
// "userName from getter" to the DB
public String getUserName() {
return userName + " from getter";
}
public void setUserName(String userName) {
this.userName = userName;
}
}
最佳答案
它使用反射。请参阅this article了解更多信息。
关于Hibernate 实体类中的注释放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14955810/