Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] Null attribute classification

I tried running the following queries with results noted.  I've attached my orm.xml in hopes it will show my error somewhere.

List<Poll> pollList = (List<Poll>) getJpaTemplate().find("select p from Poll p");
/*
results:
Internal Exception: java.sql.SQLException: Unexpected token: FROM in statement [SELECT  FROM POLL_POLL]
Error Code: -11
Call: SELECT FROM POLL_POLL
Query: ReadAllQuery(org.sakaiproject.poll.model.Poll)
Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Unexpected token: FROM in statement [SELECT FROM POLL_POLL]
Error Code: -11
Call: SELECT FROM POLL_POLL
Query: ReadAllQuery(org.sakaiproject.poll.model.Poll)
*/
List<Poll> pollList = (List<Poll>) getJpaTemplate().find("select p from Poll p where p.id = ?1", id);
/*
results:

Caused by: Exception [EclipseLink-8030] (Eclipse Persistence Services - 1.0.1 (Build 20080905)): org.eclipse.persistence.exceptions.JPQLException
Exception Description: Error compiling the query [select p from Poll p where p.id = ?1], line 1, column 29: unknown state or association field [id] of class [org.sakaiproject.poll.model.Poll].
*/

List<Poll> pollList = (List<Poll>) getJpaTemplate().findByNamedQuery("Poll.findAllPolls", siteId);
/*
results:
NamedQuery of name: Poll.findAllPolls not found.; nested exception is java.lang.IllegalArgumentException: NamedQuery of name: Poll.findAllPolls not found.
org.springframework.dao.InvalidDataAccessApiUsageException: NamedQuery of name: Poll.findAllPolls not found.; nested exception is java.lang.IllegalArgumentException: NamedQuery of name: Poll.findAllPolls not found.
Caused by: java.lang.IllegalArgumentException: NamedQuery of name: Poll.findAllPolls not found.
*/



On Thu, Oct 23, 2008 at 15:15, Carl Hall <carl.hall@xxxxxxxxx> wrote:
Poll.siteId is a String.

This is the code I run to get the error.  I'll try the queries you've noted and respond with the results as soon as I have them.

public List<Poll> findAllPolls(String siteId)
    {
        List<Poll> pollList = (List<Poll>) getJpaTemplate().find(
                "select p from Poll p where p.siteId = ?1 order by p.creationDate desc", siteId);
        return pollList;

    }


On Thu, Oct 23, 2008 at 15:04, Tom Ware <tom.ware@xxxxxxxxxx> wrote:
What is the Java type of siteId?

Do the following queries run successfully?

select p from Poll p where p.owner = ?1
select p from Poll p where p.id = ?1

Can you post the snippet of code you use to obtain and run your query?

-Tom


Carl Hall wrote:
Responses inline...


On Thu, Oct 23, 2008 at 14:21, Tom Ware <tom.ware@xxxxxxxxxx <mailto:tom.ware@xxxxxxxxxx>> wrote:

   How does you persistence.xml look?


<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
   <persistence-unit name="default" transaction-type="RESOURCE_LOCAL">
       <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>

       <mapping-file>org/sakaiproject/poll/jpa/Option.orm.xml</mapping-file>
       <mapping-file>org/sakaiproject/poll/jpa/Poll.orm.xml</mapping-file>
       <mapping-file>org/sakaiproject/poll/jpa/Vote.orm.xml</mapping-file>

       <exclude-unlisted-classes>true</exclude-unlisted-classes>

       <properties>
           <property name="eclipselink.jdbc.write-connections.min" value="1" />
           <property name="eclipselink.jdbc.read-connections.min" value="1" />
           <property name="eclipselink.logging.level" value="FINE" />
           <property name="eclipselink.logging.timestamp" value="false" />
           <property name="eclipselink.logging.session" value="false" />
           <property name="eclipselink.logging.thread" value="false" />
           <property name="eclipselink.logging.exceptions" value="false" />
           <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
           <property name="eclipselink.ddl-generation.output-mode" value="both" />
       </properties>
   </persistence-unit>
</persistence>
 
   What does your deployment archive look like?  Where is the
   persistence.xml? Where is the orm.xml?


My persistence file is located as noted above in a jar in shared/lib of Tomcat along with persistence-api-1.0.jar and eclipselink-1.0.1.jar.  I'm pretty sure my orm.xml files are loading because I had lots of validation errors from EclipseLink about field names not existing in the class (I'm converting from hibernate and not all getter names == field names).  After I got through the field name mismatches, I arrived at this point.  I also see notes in the log like "[EL Config]: The access type for the persistent class [class org.sakaiproject.poll.model.Poll] is set to PROPERTY."

I use Spring to create my EntityManager with the following bean:

   <bean id="org.sakaiproject.springframework.orm.jpa.EntityManagerFactory"
           class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
       <property name="dataSource" ref="javax.sql.DataSource" />
       <property name="jpaVendorAdapter" ref="org.sakaiproject.springframework.orm.jpa.vendor.JpaVendorAdapter" />
       <property name="loadTimeWeaver" ref="org.sakaiproject.springframework.instrument.classloading.LoadTimeWeaver" />
       <property name="persistenceXmlLocation" value="classpath:/org/sakaiproject/poll/jpa/persistence.xml" />
   </bean>


   Carl Hall wrote:

       I get the following error when trying to load up my orm.xml files:

       Caused by: Exception [EclipseLink-8030] (Eclipse Persistence
       Services - 1.0.1 (Build 20080905)):
       org.eclipse.persistence.exceptions.JPQLException
       Exception Description: Error compiling the query [select p from
       Poll p where p.siteId = ?1 order by p.creationDate desc], line
       1, column 29: unknown state or association field [siteId] of
       class [org.sakaiproject.poll.model.Poll].
          at
       org.eclipse.persistence.exceptions.JPQLException.unknownAttribute(JPQLException.java:450)
          at
       org.eclipse.persistence.internal.jpa.parsing.DotNode.validate(DotNode.java:77)
          at
       org.eclipse.persistence.internal.jpa.parsing.Node.validate(Node.java:91)
          at
       org.eclipse.persistence.internal.jpa.parsing.BinaryOperatorNode.validate(BinaryOperatorNode.java:34)
          at
       org.eclipse.persistence.internal.jpa.parsing.EqualsNode.validate(EqualsNode.java:41)
          at
       org.eclipse.persistence.internal.jpa.parsing.WhereNode.validate(WhereNode.java:34)
       <snip/>

       siteId is in my mapping definition for Poll (see below) and I
       don't get any errors when starting up the application just when
       I try to call the query noted above.  I've walked the code down
       to the point where TypeHelperImpl.getType(DatabaseMapping)
       eventually has "type = mapping.getAttributeClassification()"
       which leaves type as null.  What can I do to get this type to
       not be null?

       Part of Poll.orm.xml:
       <entity metadata-complete="true" name="Poll"
       class="org.sakaiproject.poll.model.Poll">
          <table name="POLL_POLL"/>
          <attributes>
            <id name="id">
              <column name="POLL_ID"/>
              <generated-value strategy="SEQUENCE"
       generator="POLL_POLL_ID_SEQ"/>
              <sequence-generator name="POLL_POLL_ID_SEQ"
       sequence-name="POLL_POLL_ID_SEQ"/>
            </id>
            <basic name="owner">
              <column name="POLL_OWNER" nullable="false"/>
            </basic>
            <basic name="siteId">
              <column name="POLL_SITE_ID" nullable="false"/>
            </basic>
        </attributes>
       </entity>


       ------------------------------------------------------------------------

       _______________________________________________
       eclipselink-users mailing list
       eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>

       https://dev.eclipse.org/mailman/listinfo/eclipselink-users

   _______________________________________________
   eclipselink-users mailing list
   eclipselink-users@xxxxxxxxxxx <mailto:eclipselink-users@xxxxxxxxxxx>

   https://dev.eclipse.org/mailman/listinfo/eclipselink-users



------------------------------------------------------------------------

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users
_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


<?xml version="1.0"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm_1_0.xsd orm_1_0.xsd" version="1.0">
	<entity metadata-complete="true" name="Poll" class="org.sakaiproject.poll.model.Poll">
		<table name="POLL_POLL" />
		<named-query name="Poll.findAllPolls">
			<query><![CDATA[
	  		select p from Poll p where p.siteId = ?1 order by p.creationDate desc
	  	]]></query>
		</named-query>
		<attributes>
			<id name="id">
				<column name="POLL_ID" />
				<generated-value strategy="SEQUENCE" generator="POLL_POLL_ID_SEQ" />
				<sequence-generator name="POLL_POLL_ID_SEQ" sequence-name="POLL_POLL_ID_SEQ" />
			</id>
			<basic name="owner">
				<column name="POLL_OWNER" nullable="false" />
			</basic>
			<basic name="siteId">
				<column name="POLL_SITE_ID" nullable="false" />
			</basic>
			<basic name="description">
				<column name="POLL_DETAILS" nullable="false" />
			</basic>
			<basic name="creationDate">
				<column name="POLL_CREATION_DATE" nullable="false" />
				<temporal>TIMESTAMP</temporal>
			</basic>
			<basic name="pollText">
				<column name="POLL_TEXT" nullable="false" />
			</basic>
			<basic name="voteOpen">
				<column name="POLL_VOTE_OPEN" nullable="false" />
				<temporal>TIMESTAMP</temporal>
			</basic>
			<basic name="voteClose">
				<column name="POLL_VOTE_CLOSE" nullable="false" />
				<temporal>TIMESTAMP</temporal>
			</basic>
			<basic name="minOptions">
				<column name="POLL_MIN_OPTIONS" nullable="false" />
			</basic>
			<basic name="maxOptions">
				<column name="POLL_MAX_OPTIONS" nullable="false" />
			</basic>
			<basic name="displayResult">
				<column name="POLL_DISPLAY_RESULT" nullable="false" />
			</basic>
			<basic name="limitVoting">
				<column name="POLL_LIMIT_VOTE" nullable="false" />
			</basic>
			<basic name="entityID">
				<column name="POLL_UUID" nullable="false" />
			</basic>
		</attributes>
	</entity>
</entity-mappings>

Back to the top