title: Eclipslink - Unknown entity type
body: <p>I am using some entities generated by Netbeans. After generation I tested them and they were working fine.  So then I had to move to my next step and combine those with my JAXB  objects. After combining with the JAXB objects I am able to unmarshall my XML stream with no problem. But when I try to use any of those classes for anything entity related I get some errors. </p>
  
  <p>I am back at the testing phase again now and here is what I have. I have a test class just running from a simple main method. The same setup I used to test the entities originally.  Below you will see that test class, the Classes entity, The entity causing the issues JoinAssetToSku and the error. I have left out the majority of the setters and getters of the entities.  Does anyone know what is wrong with this JoinAssetToSku.findByTs query. I do not understand how it causes that error, it is not self aware!?</p>
  
  <p>The code to do the testing:</p>
  
  <pre><code>public void testClassEntity(){
          testClass = new Classes(1);
          testClass.setClassId("12");
          testClass.setDescription("The First Class");
          testClass.setTs(new java.sql.Timestamp(new Date().getTime()));
          ClassesJpaController cc = new ClassesJpaController();
              try {
                  cc.create(testClass);
              } catch (PreexistingEntityException ex) {
                  Logger.getLogger(EntityTest.class.getName()).log(Level.SEVERE, null, ex);
              } catch (Exception ex) {
                  Logger.getLogger(EntityTest.class.getName()).log(Level.SEVERE, null, ex);
              }
      }
  </code></pre>
  
  <p>The Classes class:</p>
  
  <pre><code>package entitiesjaxb.cmic.ajrs.com;
  
  import java.io.Serializable;
  import java.util.Collection;
  import java.util.Date;
  import javax.persistence.Basic;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.Id;
  import javax.persistence.NamedQueries;
  import javax.persistence.NamedQuery;
  import javax.persistence.OneToMany;
  import javax.persistence.Table;
  import javax.persistence.Temporal;
  import javax.persistence.TemporalType;
  import javax.xml.bind.annotation.XmlRootElement;
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlElement;
  import javax.xml.bind.annotation.XmlSchemaType;
  import javax.xml.bind.annotation.XmlTransient;
  import javax.xml.bind.annotation.XmlType;
  
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "Classes", propOrder = {
      "pkId",
      "classId",
      "description",
      "ts"
  })
  
  @Entity
  @Table(name = "classes")
  @NamedQueries({
      @NamedQuery(name = "Classes.findAll", query = "SELECT c FROM Classes c"),
      @NamedQuery(name = "Classes.findByPkId", query = "SELECT c FROM Classes c WHERE c.pkId = :pkId"),
      @NamedQuery(name = "Classes.findByClassId", query = "SELECT c FROM Classes c WHERE c.classId = :classId"),
      @NamedQuery(name = "Classes.findByDescription", query = "SELECT c FROM Classes c WHERE c.description = :description"),
      @NamedQuery(name = "Classes.findByTs", query = "SELECT c FROM Classes c WHERE c.ts = :ts")})
  public class Classes implements Serializable {
      private static final long serialVersionUID = 1L;
      @Id
      @Basic(optional = false)
      @Column(name = "pk_id")
      private Integer pkId;
      @Column(name = "class_id")
      @XmlElement(name = "ClassID")
      private String classId;
      @Column(name = "description")
      @XmlElement(name = "Description")
      private String description;
      @Basic(optional = false)
      @Column(name = "ts")
      @Temporal(TemporalType.TIMESTAMP)
      @XmlElement(required = true)
      @XmlSchemaType(name = "dateTime")
      private Date ts;
      @OneToMany(mappedBy = "classes", fetch = FetchType.LAZY)
      @XmlTransient
      private Collection&lt;Categories&gt; categoriesCollection;
  
      public Classes() {
      }
  
      public Classes(Integer pkId) {
          this.pkId = pkId;
      }
  
      public Classes(Integer pkId, Date ts) {
          this.pkId = pkId;
          this.ts = ts;
      }
  </code></pre>
  
  <p>The class causing the error:</p>
  
  <pre><code>package entitiesjaxb.cmic.ajrs.com;
  
  import java.io.Serializable;
  import java.util.Date;
  import javax.persistence.Basic;
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.FetchType;
  import javax.persistence.Id;
  import javax.persistence.JoinColumn;
  import javax.persistence.ManyToOne;
  import javax.persistence.NamedQueries;
  import javax.persistence.NamedQuery;
  import javax.persistence.Table;
  import javax.persistence.Temporal;
  import javax.persistence.TemporalType;
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlElement;
  import javax.xml.bind.annotation.XmlSchemaType;
  import javax.xml.bind.annotation.XmlType;
  
  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "JoinAssetToSKU", propOrder = {
      "pkId",
      "assetData",
      "skuBasic",
      "ts"
  })
  
  @Entity
  @Table(name = "join_asset_to_sku")
  @NamedQueries({
      @NamedQuery(name = "JoinAssetToSku.findAll", query = "SELECT j FROM JoinAssetToSku j"),
      @NamedQuery(name = "JoinAssetToSku.findByPkId", query = "SELECT j FROM JoinAssetToSku j WHERE j.pkId = :pkId"),
      @NamedQuery(name = "JoinAssetToSku.findByTs", query = "SELECT j FROM JoinAssetToSku j WHERE j.ts = :ts")})
  public class JoinAssetToSKU implements Serializable {
      private static final long serialVersionUID = 1L;
      @Id
      @Basic(optional = false)
      @Column(name = "pk_id")
      private Integer pkId;
      @Column(name = "ts")
      @Temporal(TemporalType.TIMESTAMP)
      @XmlElement(required = true)
      @XmlSchemaType(name = "dateTime")
      private Date ts;
      @JoinColumn(name = "pk_sku", referencedColumnName = "pk_id")
      @ManyToOne(fetch = FetchType.LAZY)
      private SKUBasic skuBasic;
      @JoinColumn(name = "pk_asset", referencedColumnName = "pk_id")
      @ManyToOne(fetch = FetchType.LAZY)
      private AssetData assetData;
  
      public JoinAssetToSKU() {
      }
  
      public JoinAssetToSKU(Integer pkId) {
          this.pkId = pkId;
      }
  
      public Integer getPkId() {
          return pkId;
      }
  
      public void setPkId(Integer pkId) {
          this.pkId = pkId;
      }
  </code></pre>
  
  <p>The error I am getting.</p>
  
  <pre><code>[EL Info]: 2011-04-15 08:26:58.223--ServerSession(2128911821)--EclipseLink, version: Eclipse Persistence Services - 2.0.2.v20100323-r6872
  [EL Severe]: 2011-04-15 08:26:58.525--ServerSession(2128911821)--Local Exception Stack: 
  Exception [EclipseLink-8034] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.JPQLException
  Exception Description: Error compiling the query [JoinAssetToSku.findByTs: SELECT j FROM JoinAssetToSku j WHERE j.ts = :ts]. Unknown entity type [JoinAssetToSku].
          at org.eclipse.persistence.exceptions.JPQLException.entityTypeNotFound(JPQLException.java:483)
          at org.eclipse.persistence.internal.jpa.parsing.ParseTreeContext.classForSchemaName(ParseTreeContext.java:138)
          at org.eclipse.persistence.internal.jpa.parsing.SelectNode.getClassOfFirstVariable(SelectNode.java:327)
          at org.eclipse.persistence.internal.jpa.parsing.SelectNode.getReferenceClass(SelectNode.java:316)
          at org.eclipse.persistence.internal.jpa.parsing.ParseTree.getReferenceClass(ParseTree.java:439)
          at org.eclipse.persistence.internal.jpa.parsing.ParseTree.adjustReferenceClassForQuery(ParseTree.java:79)
          at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateReadQueryInternal(JPQLParseTree.java:103)
          at org.eclipse.persistence.internal.jpa.parsing.JPQLParseTree.populateQuery(JPQLParseTree.java:84)
          at org.eclipse.persistence.internal.jpa.EJBQueryImpl.buildEJBQLDatabaseQuery(EJBQueryImpl.java:202)
          at org.eclipse.persistence.internal.jpa.JPAQuery.processJPQLQuery(JPAQuery.java:106)
          at org.eclipse.persistence.internal.jpa.JPAQuery.prepare(JPAQuery.java:90)
          at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:464)
          at org.eclipse.persistence.queries.DatabaseQuery.checkPrepare(DatabaseQuery.java:430)
          at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQueries(AbstractSession.java:1747)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:409)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:671)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:620)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:228)
          at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:369)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.getServerSession(EntityManagerFactoryImpl.java:151)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:207)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
          at controllers.cmic.ajrs.com.ClassesJpaController.getEntityManager(ClassesJpaController.java:33)
          at controllers.cmic.ajrs.com.ClassesJpaController.create(ClassesJpaController.java:42)
          at cmicpojo.EntityTest.testClassEntity(EntityTest.java:33)
          at cmicpojo.Main.main(Main.java:45)
  
  [EL Info]: 2011-04-15 08:26:58.545--ServerSession(2128911821)--EclipseLink, version: Eclipse Persistence Services - 2.0.2.v20100323-r6872
  Apr 15, 2011 8:26:58 AM cmicpojo.EntityTest testClassEntity
  SEVERE: null
  Local Exception Stack: 
  Exception [EclipseLink-7092] (Eclipse Persistence Services - 2.0.2.v20100323-r6872): org.eclipse.persistence.exceptions.ValidationException
  Exception Description: Cannot add a query whose types conflict with an existing query. Query To Be Added: [ReadAllQuery(name="KeyFeatures.findByBasicDescription" referenceClass=KeyFeatures jpql="SELECT k FROM KeyFeatures k WHERE k.basicDescription = :basicDescription")] is named: [KeyFeatures.findByBasicDescription] with arguments [[class java.lang.String]].The existing conflicting query: [ReadAllQuery(name="KeyFeatures.findByBasicDescription" referenceClass=KeyFeatures jpql="SELECT k FROM KeyFeatures k WHERE k.basicDescription = :basicDescription")] is named: [KeyFeatures.findByBasicDescription] with arguments: [[class java.lang.String]].
          at org.eclipse.persistence.exceptions.ValidationException.existingQueryTypeConflict(ValidationException.java:895)
          at org.eclipse.persistence.internal.sessions.AbstractSession.addQuery(AbstractSession.java:388)
          at org.eclipse.persistence.internal.sessions.AbstractSession.addQuery(AbstractSession.java:360)
          at org.eclipse.persistence.internal.sessions.AbstractSession.processJPAQueries(AbstractSession.java:1749)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.initializeDescriptors(DatabaseSessionImpl.java:409)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.postConnectDatasource(DatabaseSessionImpl.java:671)
          at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:633)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:214)
          at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:195)
          at controllers.cmic.ajrs.com.ClassesJpaController.getEntityManager(ClassesJpaController.java:33)
          at controllers.cmic.ajrs.com.ClassesJpaController.findClasses(ClassesJpaController.java:174)
          at controllers.cmic.ajrs.com.ClassesJpaController.create(ClassesJpaController.java:62)
          at cmicpojo.EntityTest.testClassEntity(EntityTest.java:33)
          at cmicpojo.Main.main(Main.java:45)
  </code></pre>