Duplicate annotation error - but where?

16,896

Solution 1

I would be incredible surprised if the @NamedQueries is a issue, the name suggests that it should be a list/array of @NamedQuery items.

Try:

@Column(name = "name", length = 128)
private String name;

Seeing as you are confidant that you don't actually have @size repeated, maybe we should be looking at overlap of function, the @Column annotation contains the same functionality, maybe this could be causing a conflict.

Solution 2

I get the same issue but my problem was comming from pom.xml file. I had there two jpa dependencies

<dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
        <version>2.5.2</version>
        <scope>provided</scope>
</dependency>

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

I deleted the first one and this solved my problem. Sorry for my english level

Solution 3

The answers in here already discuss the possible solutions to solve this problem so I will focus on sharing my findings on the root cause of the issue.

I experienced this issue after generating entities using Netbeans 8.2 with the Create Persistence Unit box ticked. Doing this procedure causes two dependencies to be added to your project in the pom.xml namely org.eclipse.persistence.jpa.modelgen.processor and eclipselink.

These EclipseLink dependencies added to my project had a bug issue that was reported :

... @Column annotation seem to suddenly not be compatible with other annotations anymore.

As a result of this bug, you therefore would not be able to use @Column annotation with either @NotNull or @Size.

Solution 4

In the pom.xml file, delete:

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>org.eclipse.persistence.jpa.modelgen.processor</artifactId>
    <version>2.5.2</version>
    <scope>provided</scope>
</dependency>

Solution 5

this error exists at IDE level. For example on field userName annoted as:

@NotNull
@Size(max = 255)
@Column(name = "user_id", nullable = false, length = 255)
private String userName;

will throw the duplicate error triggered by @Size and length = 255 and most probably if the size validity of user_id is not set in the database; and @NotNull and nullable = false also most probably if the not nullable constraint hasn't been set in the DB. Note that by default NetBeans validates your String fields to length 255 on Entity autogeneration if the validity doesn't originate from the DB. Correct the error thrown by:

@Column(name = "user_id", nullable = false, length = 255)
private String userName;

OR

@NotNull
@Size(max = 255)
@Column(name = "user_id")
private String userName;

Edit: For spring-boot users, error could be common if you have both eclipse-link and spring-data-jpa defined in your pom.xml. exclude eclipse-link in your dependencies

Share:
16,896
j4nd3r53n
Author by

j4nd3r53n

Updated on July 08, 2022

Comments

  • j4nd3r53n
    j4nd3r53n almost 2 years

    Briefly, first - I get this Exception message:

    serverError: class javax.faces.el.EvaluationException Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
    

    My code consist of 1 Entity class for a table, an EJB, a 'business class' and a JSF page; the exception happens when I call EntityManager.merge(). There is only 1 annotation with 'max = 128' in it:

    @Size(max = 128)
    @Column(name = "name")
    private String name;
    

    The only place with duplicated annotations is:

    @Entity
    @Table(name = "attributes", schema = "office_db")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "Attributes.findAll", query = "SELECT a FROM Attributes a"),
        @NamedQuery(name = "Attributes.findById", query = "SELECT a FROM Attributes a WHERE a.id = :id"),
        @NamedQuery(name = "Attributes.findByName", query = "SELECT a FROM Attributes a WHERE a.name = :name"),
        @NamedQuery(name = "Attributes.findByType", query = "SELECT a FROM Attributes a where a.type.id = :type")
    })
    

    but I think that should be legit as it has been generated by Netbeans 8.2 from the database table.

    Now some more details. First the table:

    mysql> show create table attributes\G
    *************************** 1. row ***************************
           Table: attributes
    Create Table: CREATE TABLE `attributes` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `parent` int(11) DEFAULT NULL,
      `type` int(11) DEFAULT NULL,
      `name` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
      PRIMARY KEY (`id`),
      KEY `parent_ix` (`parent`),
      KEY `type_ix` (`type`),
      CONSTRAINT `attributes_parent_fk` FOREIGN KEY (`parent`) REFERENCES `attributes` (`id`),
      CONSTRAINT `attributes_type_fk` FOREIGN KEY (`type`) REFERENCES `attributes` (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1301 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
    1 row in set (0.03 sec)
    

    Next the Entity class:

    import (...stuff...)
    
    @Entity
    @Table(name = "attributes")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "Attributes.findAll", query = "SELECT a FROM     Attributes a"),
        @NamedQuery(name = "Attributes.findById", query = "SELECT a FROM Attributes a WHERE a.id = :id"),
        @NamedQuery(name = "Attributes.findByName", query = "SELECT a FROM Attributes a WHERE a.name = :name"),
        @NamedQuery(name = "Attributes.findByType", query = "SELECT a FROM Attributes a where a.type.id = :type")
    })
    public class Attributes implements Serializable {
    
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "id")
        private Integer id;
        @Size(max = 128)
        @Column(name = "name")
        private String name;
        @OneToMany(mappedBy = "parent")
        private Collection<Attributes> attributesCollection;
        @JoinColumn(name = "parent", referencedColumnName = "id")
        @ManyToOne
        private Attributes parent;
        @OneToMany(mappedBy = "type")
        private Collection<Attributes> attributesCollection1;
        @JoinColumn(name = "type", referencedColumnName = "id")
        @ManyToOne
        private Attributes type;
        private static final Logger logger=
                Logger.getLogger(Attributes.class.getName());
    
        public Attributes() {
        }
    
        public Attributes(Integer id) {
            this.id = id;
        }
        public Attributes(Integer id, Integer parent, Integer type, String name) {
            logger.info("OFFICE Attributes constructor 3 id: "+id+", parent:     "+parent+", type: "+type+", name: "+name);
            this.parent=new Attributes();
            this.type=new Attributes();
            this.id = id;
            this.parent.setId(parent);
            this.type.setId(type);
            this.name = name;
        }
    
        public Attributes(Integer parent, Integer type, String name) {
            logger.info("OFFICE Attributes constructor 4 parent: "+parent+", type: "+type+", name: "+name);
            this.parent=new Attributes();
            this.type=new Attributes();
            this.parent.setId(parent);
            this.type.setId(type);
            this.name = name;
            logger.info("OFFICE Attributes constructor 4a");
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        @XmlTransient
        public Collection<Attributes> getAttributesCollection() {
            return attributesCollection;
        }
    
        public void setAttributesCollection(Collection<Attributes> attributesCollection) {
            this.attributesCollection = attributesCollection;
        }
    
        public Attributes getParent() {
            return parent;
        }
    
        public void setParent(Attributes parent) {
            this.parent = parent;
        }
    
        @XmlTransient
        public Collection<Attributes> getAttributesCollection1() {
            return attributesCollection1;
        }
    
        public void setAttributesCollection1(Collection<Attributes> attributesCollection1) {
            this.attributesCollection1 = attributesCollection1;
        }
    
        public Attributes getType() {
            return type;
        }
    
        public void setType(Attributes type) {
            this.type = type;
        }
    
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        }
    
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Attributes)) {
                return false;
            }
            Attributes other = (Attributes) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            }
            return true;
        }
    
        @Override
        public String toString() {
            return "docdb.Attributes[ id=" + id + " ]";
        }
    }
    

    The EJB or session class:

    import (...stuff...)
    
    @Stateless
    public class AttributesSession {
        @PersistenceContext(unitName ="officePU")
        private EntityManager em;
        private static final Logger logger=
                Logger.getLogger(AttributesSession.class.getName());
    
        public List<Attributes>findAttributes(){
            TypedQuery<Attributes> query=
                        em.createNamedQuery("Attributes.findAll",Attributes.class);
            return query.getResultList();
        }
    
        public Attributes findAttributeById(Long id){
            TypedQuery<Attributes> query=
                    em.createNamedQuery("Attributes.findById", Attributes.class);
            query.setParameter("id", id);
            return query.getSingleResult();
        }
    
        public Integer findChildCount(Long id){
            TypedQuery<Integer> query=em.createNamedQuery("findChildCount",Integer.class);
            query.setParameter("id", id);
            return query.getSingleResult();
        }
    
        public String createAttributes(Attributes attr){
            String msg="";
    
            try{
                em.merge(attr);
                em.flush();
            }
            catch (PersistenceException e){
                msg=e.getMessage();
            }
            return msg;
        }
    
        public String deleteAttributes(Attributes attr){
            String msg = "";
    
            try{
                em.remove(em.merge(attr));
                em.flush();
            }
            catch (PersistenceException e){
                msg=e.getMessage();
            }
            return msg;
        }
    }
    

    The business or controller class:

    import (...stuff...)
    
    @Named(value = "attributesController")
    @SessionScoped
    public class AttributesController implements Serializable{
        @EJB private AttributesSession sess;
        private Attributes attr;
        private List<Attributes> attrList;
        private Integer id;
        private Integer parent;
        private Integer type;
        private String name;
        private String errmsg;
        private static final Logger logger=
                Logger.getLogger(AttributesController.class.getName());
    
        public AttributesController() {
            this.attrList = new ArrayList<>();
            this.attr = new Attributes();
        }
    
        public List<Attributes> getAttrList() {
            return attrList;
        }
    
        public List<Attributes> getAttrValueList() {
            return attrList;
        }
    
        ...getters and setters...
    
        public void clearForm(){
            this.id=null;
            this.name=null;
            this.parent=null;
            this.type=null;
            this.errmsg=null;
        }
    
        public String createAttributes(){
            if (this.id!=null){
                attr=new Attributes(this.id,this.parent,this.type,this.name);
            }
            else{
                attr=new Attributes(this.parent,this.type,this.name);
            }
            errmsg=sess.createAttributes(attr);
            attrList=sess.findAttributes();
            return "editattributes.xhtml";
        }
    
        public String deleteAttributes(){
            if (this.id!=null){
                attr=new Attributes(this.id,this.parent,this.type,this.name);
                errmsg=sess.deleteAttributes(attr);
            }
            attrList=sess.findAttributes();
            return "editattributes.xhtml";
        }
    
        public String listAttributes(){
            attrList=sess.findAttributes();
            return "editattributes.xhtml";
        }
    
        @PostConstruct
        public void updateList(){
            attrList=sess.findAttributes();
        }
    
        @Override
        public String toString(){
            return "Name: "+((name==null)?"":name)
                    +", parent: "+((parent==null)?"":parent)
                    +", type:"+((type==null)?"":type);
        }
    }
    

    Finally, the stack trace:

    [2017-10-31T10:23:31.697+0000] [glassfish 5.0] [WARNING] [] [javax.enterprise.resource.webcontainer.jsf.lifecycle] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1509445411697] [levelValue: 900] [[
      #{attributesController.createAttributes()}: java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
    javax.faces.FacesException: #{attributesController.createAttributes()}: java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
            ...(deleted stuff)
            ... 35 more
    Caused by: java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
            ... (stuff deleted)
            at docdb.__EJB31_Generated__AttributesSession__Intf____Bean__.createAttributes(Unknown Source)
            at docdb.AttributesController.createAttributes(AttributesController.java:118)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:483)
            at javax.el.ELUtil.invokeMethod(ELUtil.java:304)
            at javax.el.BeanELResolver.invoke(BeanELResolver.java:535)
            at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
            at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
            at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
            at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
            at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
            at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
            at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
            ... 36 more
    ]]
    
    [2017-10-31T10:23:31.700+0000] [glassfish 5.0] [INFO] [] [docdb.LifeCycleListener] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1509445411700] [levelValue: 800] [[
      OFFICE END PHASE INVOKE_APPLICATION 5]]
    
    [2017-10-31T10:23:31.701+0000] [glassfish 5.0] [INFO] [] [docdb.LifeCycleListener] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1509445411701] [levelValue: 800] [[
      OFFICE]]
    
    [2017-10-31T10:23:31.703+0000] [glassfish 5.0] [SEVERE] [] [javax.enterprise.resource.webcontainer.jsf.context] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1509445411703] [levelValue: 1000] [[
      javax.faces.el.EvaluationException: java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
            at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:101)
            at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
            at javax.faces.component.UICommand.broadcast(UICommand.java:330)
            at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:870)
            at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1418)
            at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
            at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
            at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:201)
            at javax.faces.webapp.FacesServlet.service(FacesServlet.java:670)
            at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1580)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:258)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
            at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:652)
            at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:591)
            at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
            at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:371)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:238)
            at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:463)
            at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:168)
            at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206)
            at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180)
            at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:242)
            at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
            at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
            at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
            at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
            at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
            at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
            at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:539)
            at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
            at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
            at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
            at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
            at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:593)
            at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:573)
            at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.annotation.AnnotationFormatError: Duplicate annotation for class: interface javax.validation.constraints.Size: @javax.validation.constraints.Size(groups=[], min=0, message={javax.validation.constraints.Size.message}, payload=[], max=128)
            at sun.reflect.annotation.TypeAnnotationParser.mapTypeAnnotations(TypeAnnotationParser.java:361)
            at sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedTypeBaseImpl.<init>(AnnotatedTypeFactory.java:139)
            at sun.reflect.annotation.AnnotatedTypeFactory.buildAnnotatedType(AnnotatedTypeFactory.java:65)
            at sun.reflect.annotation.TypeAnnotationParser.buildAnnotatedType(TypeAnnotationParser.java:79)
            at java.lang.reflect.Field.getAnnotatedType(Field.java:1159)
            at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findCascadingMetaData(AnnotationMetaDataProvider.java:610)
            at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.findPropertyMetaData(AnnotationMetaDataProvider.java:231)
            at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getFieldMetaData(AnnotationMetaDataProvider.java:220)
            at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.retrieveBeanConfiguration(AnnotationMetaDataProvider.java:128)
            at org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider.getBeanConfiguration(AnnotationMetaDataProvider.java:119)
            at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanConfigurationForHierarchy(BeanMetaDataManager.java:220)
            at org.hibernate.validator.internal.metadata.BeanMetaDataManager.createBeanMetaData(BeanMetaDataManager.java:187)
            at org.hibernate.validator.internal.metadata.BeanMetaDataManager.lambda$getBeanMetaData$0(BeanMetaDataManager.java:160)
            at org.hibernate.validator.internal.metadata.BeanMetaDataManager$$Lambda$24/1020030882.apply(Unknown Source)
            at java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:324)
            at org.hibernate.validator.internal.metadata.BeanMetaDataManager.getBeanMetaData(BeanMetaDataManager.java:159)
            at org.hibernate.validator.internal.engine.ValidatorImpl.getConstraintsForClass(ValidatorImpl.java:308)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.isBeanConstrained(BeanValidationListener.java:158)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.validateOnCallbackEvent(BeanValidationListener.java:108)
            at org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.preUpdate(BeanValidationListener.java:94)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:726)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:696)
            at org.eclipse.persistence.descriptors.DescriptorEventManager.executeEvent(DescriptorEventManager.java:233)
            at org.eclipse.persistence.descriptors.changetracking.DeferredChangeDetectionPolicy.calculateChanges(DeferredChangeDetectionPolicy.java:87)
            at org.eclipse.persistence.descriptors.changetracking.AttributeChangeTrackingPolicy.calculateChangesForExistingObject(AttributeChangeTrackingPolicy.java:48)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.calculateChanges(UnitOfWorkImpl.java:711)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1566)
            at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.issueSQLbeforeCompletion(UnitOfWorkImpl.java:3256)
            at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.issueSQLbeforeCompletion(RepeatableWriteUnitOfWork.java:355)
            at org.eclipse.persistence.transaction.AbstractSynchronizationListener.beforeCompletion(AbstractSynchronizationListener.java:158)
            at org.eclipse.persistence.transaction.JTASynchronizationListener.beforeCompletion(JTASynchronizationListener.java:68)
            at com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:452)
            at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:854)
            at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:723)
            at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:507)
            at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4600)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2108)
            at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2078)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220)
            at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88)
            at com.sun.proxy.$Proxy175.createAttributes(Unknown Source)
            at docdb.__EJB31_Generated__AttributesSession__Intf____Bean__.createAttributes(Unknown Source)
            at docdb.AttributesController.createAttributes(AttributesController.java:118)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:483)
            at javax.el.ELUtil.invokeMethod(ELUtil.java:304)
            at javax.el.BeanELResolver.invoke(BeanELResolver.java:535)
            at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
            at com.sun.el.parser.AstValue.invoke(AstValue.java:285)
            at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
            at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)
            at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
            at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
            at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
            ... 36 more
    ]]
    
  • j4nd3r53n
    j4nd3r53n over 6 years
    Thx for your suggestion - I will give it a try when I get near my computer. I agree that it is highly unlikely to have anything to do with @NamedQueries; even if it did, that ought to be caught at compilation, and I have the problem at run-time.
  • j4nd3r53n
    j4nd3r53n over 6 years
    That actually worked! Amazing - thx a lot. I can't vote your answer up, but I ticked it as an answer - I'd really like to know why it makes a difference, though.
  • Dale
    Dale over 6 years
    I had a similar error for '@NotNull' annotation and had to remove that and add nullable=false to '@Column' annotation