roger.keays wrote:
>
>
>
> roger.keays wrote:
>>
>> I've noticed that in 1.0.0, 1.0.1 and 1.1.0-SNAPSHOT I cannot combine
>> WHERE and ORDER BY if they both use subclass fields. This wasn't a
>> problem in 0.9.7
> Correction: this hasn't changed since 0.9.7. The problem has appeared
> since I switched from using mapping files to annotations.
>
This was caused by a missing @DiscriminatorColumn annotation.
----------
> Perhaps somebody here could have a look at how I am bootstrapping the EMF.
> The regular methods using persistence.xml aren't flexible enough for us,
> so we do it programatically using the following code:
>
> PersistenceUnitInfoImpl pui = new PersistenceUnitInfoImpl();
> Boolean hasEntities = false;
> if (mappingFiles != null) {
> for (String mapping : mappingFiles) {
> pui.addMappingFileName(mapping);
> hasEntities = true;
> }
> }
> if (entities != null) {
> for (String entity : entities) {
> pui.addManagedClassName(entity);
> hasEntities = true;
> }
> }
> if (hasEntities) {
> PersistenceProductDerivation pd = new
> PersistenceProductDerivation();
> try {
> ConfigurationProvider cp = pd.load(pui, allConfig);
> BrokerFactory factory = Bootstrap.newBrokerFactory(cp,
> pui.getClassLoader());
>
> site.setEmf(JPAFacadeHelper.toEntityManagerFactory(factory));
> } catch (Exception e) {
> throw PersistenceExceptions.toPersistenceException(e);
> }
> }
>
> Could this be causing the problem? It seems strange that it works using
> mapping files, but not when we provide a list of annotated entity class
> names.
>
> Thanks in advance,
>
> Roger
>
>
>
>> e.g. these queries work (id is a subclass field, uuid is a superclass
>> field):
>>
>> SELECT i FROM News i ORDER BY i.id;
>> SELECT i FROM News i WHERE i.id > 1;
>> SELECT i FROM News i WHERE i.uuid > 1 ORDER BY i.uuid;
>> SELECT i FROM News i WHERE i.id > 1 ORDER BY i.uuid;
>> SELECT i FROM News i WHERE i.uuid > 1 ORDER BY i.id;
>>
>> but this query fails:
>>
>> SELECT i FROM News i WHERE i.id > 1 ORDER BY i.id;
>>
>> the stack trace follows.
>>
>> Caused by: <openjpa-1.0.0-r420667:570500 nonfatal general error>
>> org.apache.openjpa.persistence.Persiste
>> nceException: ERROR: missing FROM-clause entry for table "t0" {prepstmnt
>> 26955692 SELECT t1.uuid, t2.id,
>> t2.comment, t2.inheritable, t2.level, t2.role, t2.type, t2.username FROM
>> FB_METADATA t1 INNER JOIN FB_P
>> RIVILEGES t2 ON t1.uuid = t2.item_uuid WHERE (t0.id > ?) ORDER BY t1.uuid
>> ASC [params=(long) 1]} [code=0
>> , state=42P01]
>> at
>> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3849)
>> at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
>> at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
>> at
>> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
>> at
>> org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.handleCheckedException(SelectResult
>> ObjectProvider.java:155)
>> at
>> org.apache.openjpa.datacache.QueryCacheStoreQuery$CachingResultObjectProvider.handleCheckedEx
>> ception(QueryCacheStoreQuery.java:634)
>> at
>> org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:40)
>> at
>> org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
>> at
>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
>> at
>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:799)
>> at
>> org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:769)
>> at
>> org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
>> at
>> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:235)
>> at
>> org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
>> at
>> furnace.core.el.EntityFunctions.query1(EntityFunctions.java:71)
>>
>> t0 should be FB_NEWS
>>
>
>
--
View this message in context:
http://www.nabble.com/WHERE-clauses-with-ORDER-BY-subclass-field-tp14290053p14305850.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.