0

这是我在控制器中的代码,在这里我保存我的对象

public static void newNdsf(Integer cprNumber,String fstCode,Date startDate,
            Double amount, Date endDate, String isActive, String userCreated, String msg){

    Beneficiary beneficiary = new Beneficiary();
    beneficiary.beneficiaryPK = (new BeneficiaryPK(cprNumber, fstCode, startDate));
    beneficiary.dateCreated = (new Date());
    beneficiary.userCreated = userCreated;
    beneficiary.amount = new BigDecimal(amount);
    beneficiary.dateLastUpdate = (new Date());
    beneficiary.userLastUpdate = userCreated; 
    beneficiary.endDate = endDate;

    if(isActive.charAt(0) == Constants.IN_ACTIVE || isActive.charAt(0) == Constants.ACTIVE)
        beneficiary.isActive = isActive.charAt(0);
    else
        System.out.println("in valid is Active value entered in service");  
    beneficiary.save();
    int count = new CRSServices().savePersonDetails(cprNumber);
    System.out.println("Person Data saved from Service : " + count);
    msg = msg.concat("Entered Successfully");
    renderText(msg);
}

在模型中,我覆盖了保存方法以捕获一些异常

@Override

 public <T extends JPABase> T save() 
{
        long startTs = System.currentTimeMillis();
        if (endDate != null && beneficiaryPK != null && beneficiaryPK.startDate != null &&    endDate.before(beneficiaryPK.startDate)){
            throw new RuntimeException("startdate_after_end_date");
        }
        Object result  = super.save();
        logger.debug("Save Took: {} " , System.currentTimeMillis() - startTs);
        return (T) result;
    }

此代码适用于 WAS6

但是当我在 WAS8 中使用它时

它给了我这个例外

@6d2l11n03
Internal Server Error (500)

Execution exception (In /app/models/Beneficiary.java around line 221)
ValidationException occured : error during validation of 

play.exceptions.JavaExecutionException: error during validation of <unknown>
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:290)
    at play.server.ServletWrapper$ServletInvocation.execute(ServletWrapper.java:476)
    at play.Invoker$Invocation.run(Invoker.java:187)
    at play.server.ServletWrapper$ServletInvocation.run(ServletWrapper.java:467)
    at play.Invoker.invokeInThread(Invoker.java:61)
    at play.server.ServletWrapper.service(ServletWrapper.java:117)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1214)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1027)
    at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:895)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
    at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1659)
Caused by: javax.validation.ValidationException: error during validation of <unknown>
    at org.apache.bval.jsr303.ClassValidator.unrecoverableValidationError(ClassValidator.java:633)
    at org.apache.bval.jsr303.ClassValidator.validate(ClassValidator.java:161)
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:113)
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:71)
    at org.hibernate.action.EntityInsertAction.preInsert(EntityInsertAction.java:177)
    at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:72)
    at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:267)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:259)
    at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:178)
    at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:345)
    at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:51)
    at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1206)
    at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:791)
    at play.db.jpa.JPABase._save(JPABase.java:47)
    at play.db.jpa.GenericModel.save(GenericModel.java:187)
    at models.Beneficiary.save(Beneficiary.java:221)
    at controllers.NdsfService.newNdsf(NdsfService.java:189)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:413)
    at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:408)
    at play.mvc.ActionInvoker.invoke(ActionInvoker.java:182)
    ... 27 more
Caused by: play.exceptions.UnexpectedException: Unexpected Error
    at play.db.jpa.JPAPlugin$JPAModelLoader.keyValue(JPAPlugin.java:491)
    at play.db.jpa.JPABase._key(JPABase.java:96)
    at play.db.jpa.JPABase.hashCode(JPABase.java:226)
    at org.apache.bval.jsr303.GraphBeanIdentity.hashCode(GraphBeanIdentity.java:123)
    at java.util.HashMap.getEntry(HashMap.java:510)
    at java.util.HashMap.get(HashMap.java:498)
    at org.apache.bval.jsr303.GroupValidationContextImpl.collectValidated(GroupValidationContextImpl.java:133)
    at org.apache.bval.jsr303.ClassValidator.validateBeanNet(ClassValidator.java:421)
    at org.apache.bval.jsr303.ClassValidator.validate(ClassValidator.java:141)
    ... 45 more
Caused by: play.exceptions.UnexpectedException: Cannot get the object @Id for an object of type class models.Beneficiary
    at play.db.jpa.JPAPlugin$JPAModelLoader.keyField(JPAPlugin.java:511)
    at play.db.jpa.JPAPlugin$JPAModelLoader.keyValue(JPAPlugin.java:489)
    ... 53 more

如果有人可以帮忙!!!

4

1 回答 1

0

想通了

在我的对象之前我只有

@EmbeddedId
    public BeneficiaryPK beneficiaryPK;

这在 WAS 6 中有效,但在 WAS 8 中无效

所以现在我添加了@Id,并且两个注释都在 WAS 8 中工作

 @EmbeddedId
    @Id  
    public BeneficiaryPK beneficiaryPK;

希望这会有所帮助

于 2013-01-16T09:20:32.263 回答