@PreUpdate不会返回正确的异常消息

时间:2013-04-07 12:51:33

标签: jpa-2.0 eclipselink glassfish-3

为了验证我的实体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);
}
}

如果我尝试用

创建一个bean
try {
        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。如何获得与上述相同的结果并避免所有记录,这也会发生?

1 个答案:

答案 0 :(得分:2)

在编辑方法中调用flush以强制执行preupdate。否则,它在事务完成时发生,并且容器必须抛出事务异常。