为了验证我的实体bean,我在my bean
中创建了这个验证方法@PrePersist
@PreUpdate
public void validate(){
if (startTime.after(stopTime)) throw new ValidationException("Wrong order");
}
ValidationException如下所示:
@ApplicationException(rollback = true)
public class ValidationException extends RuntimeException {
public ValidationException(String message) {
super(message);
}
}
如果我尝试用
创建一个beantry {
timeframefacade.create(timeframe);
} catch (Exception e) {
System.out.println(e.getMessage());
e.getMessage()返回“错误的顺序”,这是正确的
try {
timeframefacade.edit(timeframe);
} catch (Exception e) {
System.out.println(e.getMessage());
它返回“Transaction aborted”,这是一个EJBException。如何获得与上述相同的结果并避免所有记录,这也会发生?
答案 0 :(得分:2)
在编辑方法中调用flush以强制执行preupdate。否则,它在事务完成时发生,并且容器必须抛出事务异常。