mysql - 休眠保存或更新会话不起作用
问题描述
我是hibernate的新手,并且正在从事一个项目,我想在有人购买会员资格时更新会员资格的到期日期。我编写了一个实现 AtributeConverter 的类。调用 buyMembership 方法后,两种打印方法都在打印正确的日期,但数据库没有得到更新。在控制台中,它显示只有选择查询正在运行。正在执行更新查询。参考代码供参考
USER_LOGIN 类
@Entity
@Table(name = "login")
public class User_Login {
@Id
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "enabled")
private Boolean enabled = false;
@Column(name="start_date")
private LocalDate startDate;
@Column(name="end_date")
private LocalDate expiryDate;
存储库
public void buyMembership(String months,String email) {
Session currentSession = manager.unwrap(Session.class);
User_Login user = currentSession.get(User_Login.class, email);
LocalDate date = user.getExpiryDate();
LocalDate current = LocalDate.now();
if(date.compareTo(current)<0) {
user.setStartDate(current);
LocalDate newExpiryDate = current.plusMonths(Long.parseLong(months));
System.out.println(newExpiryDate);
user.setExpiryDate(newExpiryDate);
user.setStartDate(current);
//currentSession.saveOrUpdate(user);
}
else {
LocalDate newExpiryDate = date.plusMonths(Long.parseLong(months));
System.out.println(newExpiryDate);
user.setExpiryDate(newExpiryDate);
user.setStartDate(current);
System.out.println(user.getExpiryDate());
//currentSession.saveOrUpdate(user);
}
currentSession.update(user);
}
属性转换器*
@Converter(autoApply = true)
public class LocalDatePersistenceConverter implements
AttributeConverter<LocalDate, Date> {
@Override
public Date convertToDatabaseColumn(LocalDate attribute) {
if(attribute==null)
return null;
return java.sql.Date.valueOf(attribute);
}
@Override
public LocalDate convertToEntityAttribute(java.sql.Date dbData) {
if(dbData==null)
return null;
return dbData.toLocalDate();
}
}
解决方案
实际上,这是一个愚蠢的错误。我刚刚错过了将我的 buyMembership 服务标记为事务性的。在那之后,它就像一个魅力......
推荐阅读
- php - Laravel - 电子邮件验证后如何重定向到以前的网址?
- awk - 在一行上匹配两个模式并将它们打印在两列中
- python - 使用python的super()继承属性
- excel - 粘贴但保留目标格式
- highcharts - Highcharts:次轴的负值应低于 x 轴
- html - Highchart 树节点文本溢出
- swift - 当默认模式兼容所有类别时,AVAudioSession 中的其他模式有什么用?
- c++ - 将结构内的数组从 Cpp 写入 QML
- angular - 是否可以在 Angular 中覆盖 MatIconRegistry 中的 HttpClient?
- linux - NGINX - 忽略 js 和 css 文件上的获取参数