在我们的Play应用程序中,我们使用Ebean ORM。我们有用于从Play Model类继承的模型类。从Play 2.4开始,我们的模型类必须继承自Avaje Ebean Model类。这些模型类得到了增强,即我们的模型类中注入了几种方法。由于此更改,我们收到JAXB错误消息,例如:
Caused by: com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
com.avaje.ebean.bean.PersistenceContext is an interface, and JAXB can't handle interfaces.
this problem is related to the following location:
at com.avaje.ebean.bean.PersistenceContext
at public com.avaje.ebean.bean.PersistenceContext com.avaje.ebean.bean.EntityBeanIntercept.getPersistenceContext()
at com.avaje.ebean.bean.EntityBeanIntercept
at protected com.avaje.ebean.bean.EntityBeanIntercept models.Phase._ebean_intercept
at models.Phase
我尝试通过将其添加到Phase模型类来解决此问题:
@XmlTransient
public EntityBeanIntercept _ebean_intercept() {
throw new NotImplementedException();
};
不幸的是,这个技巧不起作用并导致错误消息"在类文件模型/阶段"中重复方法名称和签名。有没有另一种方法告诉JAXB忽略这个类的增强成员?
答案 0 :(得分:0)
虽然这篇文章How do I prevent JAXB from binding superclass methods of the @XmlRootElement when marshalling?上接受的答案是说这是不可能的,但在某些情况下还有第二个答案提供了解决方法。
我猜这个新的超类并不和你的模特课住在同一个包中,所以你可能会失败: - (