【发布时间】:2015-04-01 14:11:42
【问题描述】:
我尝试在我的Play! Framework 程序中使用Ebean 更新我的数据库中的一行。
这是我要更新的实体的类。
Transaction.java
@Entity
@Table(name = "transactions")
public class Transaction extends Model{
@Id
@GeneratedValue
public int id;
@OneToOne
@JoinColumn(name = "car_fk")
public Car car;
@OneToOne
@JoinColumn(name = "user_lender_fk")
public User user;
@Version
public Timestamp from_date;
@Version
public Timestamp to_date;
public boolean availability; // true -> Available.
public String status;
}
这是我用来更新它的方法:
Transaction transaction = new Transaction();
transaction.car = concernedCars.get(i);
transaction.user = currentUser;
transaction.from_date = Tools.StringAndroidToTimestamp(dateFrom);
transaction.to_date = Tools.StringAndroidToTimestamp(dateTo);
transaction.status = Constants.WAITING_FOR_ANSWER;
try{
Ebean.update(transaction);
}catch(OptimisticLockException e){
Logger.info(e.toString());
}
如果有必要,我将 String 转换为 Timestamp 的方法:
public static Timestamp StringAndroidToTimestamp(String s){
String toConvert = s.substring(0, s.length()-2);
Logger.info("ToConvert = "+toConvert);
Timestamp timestamp = null;
try{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsedDate = dateFormat.parse(toConvert);
timestamp = new Timestamp(parsedDate.getTime());
}catch(Exception e){
Logger.info("Exception date = " +e.toString());
}
return timestamp;
}
当然,我得到了神话般的错误:
javax.persistence.OptimisticLockException:数据已更改。更新 [0] 行 sql
我做错了什么?
【问题讨论】:
标签: java orm playframework timestamp ebean