[英]Hibernate update java object field from database
我有豆
@Entity
@Table(name = "Users")
public class User {
@Id
@GeneratedValue
@Column(name = "userId")
private Integer userId;
@Column(name = "username")
private String username;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "parentId")
@Fetch(value = FetchMode.SUBSELECT)
private List<User> childs;
@Column(name = "password")
private String password;
@Column(name = "email")
private String email;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "userId")
@Fetch(value = FetchMode.SUBSELECT)
private List<Role> roles;
和一个由休眠加载的对象,但在将所有更改保存到数据库之前,我需要从数据库中获取当前密码。 我正在尝试这样做
if (user.getPassword() == null) { user.setPassword(userDao.getUserById(user.getUserId()).getPassword());}
但我收到 DuplicateKeyException。
那么,我该怎么做呢? 或者,我可以保存除密码以外的所有字段吗?
您可以使用 Hibernate 从数据库中检索数据,将您的(分离的)bean(来自您的表示或业务层)中的值复制到这个 JPA bean(由 Hibernate 返回的那个)中,然后让 Hibernate 更新数据库(在交易结束),或者如果您愿意,可以明确表示。
您可以使用注释@Column(updatable=false)
从数据库更新中排除该字段
您可以使用 Hibernatecallback 方法@PrePersist。 在坚持之前执行一些操作,您可以将您的密码写入本地瞬态变量逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.