我有一个表(USERS)
,其中包含列:
这映射到User
类:
@Table(name = "USERS")
@Entity
public class User implements Serializable {
private static final long serialVersionUID = -6894800373034942671L;
@Transient
private String userName;
@Id
@Column(name = "TABLE_ID")
private Integer tableId;
@Column(name = "USER_ID")
private Integer userId;
@Column(name = "VALUE")
private Double value;
@Column(name = "DATE")
private Date date;
public User() {
}
// Getters and setters here
}
表约束使用索引:
我将创建User
个对象的列表,每个对象都有不同的userId
。如果对于特定的date
,表中存在userId
的用户记录,我想更新其value
,否则插入新的User
对象。
我是否需要使用HQL
选择,为缺少的对象创建新的User
对象,然后运行saveOrUpdate
?还是有更好的方法吗?
如何使用hibernate实现上述目标?
答案 0 :(得分:0)
SaveOrUpdate方法会很好..但不要忘记,如果你想更新一条记录,你必须首先从数据库中获取它以获取Ex:
//in your Dao Class
...
public void save(User user){
Transaction tx = null;
Session session = SessionFactoryUtil.getInstance().getCurrentSession();
try {
tx = session.beginTransaction();
session.saveOrUpdate(user);
tx.commit;
}catch(Exception e){
tx.rollBack();
}
}
public User getUserById(int user_id){
User user=(User) session.get(User.class, user_id);
return user;
}
//creating new User
User user1=new User();
user1.setName("Mohamed");
yourDao.save(user1);
//updating an existing User
User user2=yourDao.getUserById(19);
user2.setCountry("Morocco");
yourDao.save(user2);