Duplicate annotation error - but where?
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
j4nd3r53n
Updated on July 08, 2022Comments
-
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 over 6 yearsThx 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 over 6 yearsThat 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 over 6 yearsI had a similar error for '@NotNull' annotation and had to remove that and add nullable=false to '@Column' annotation