I switched one query to JPAQL but still got the same messages, then I listed
out each class in persistence.xml specifically and that seemed to solve the
issue. From what I have been able to research all openjpa implemementations
should list all the classes in use in persistence.xml even though toplink
and oracle do not require this. However now I am getting
java.lang.UnsupportedOperationException: Result lists are read-only even
after I close the entity manager. This is because we are returning the lists
outside of the class Database.java where they should no longer be attached,
but apparently are. How do I detach these lists so the business logic can
manipulate them?




Craig L Russell wrote:
> 
> Hi,
> 
> Is there a reason you're using a native query for this, and not a  
> JPAQL query?
> 
> What you get from a native query is data, not objects. Your code is  
> looking for an Account object and should use a JPAQL query.
> 
> Craig
> 
> On Jan 11, 2010, at 11:06 AM, racarlson wrote:
> 
>>
>> public class Database
>> {
>>
>>      //
>> *******************************************************************************************
>>      private final static Logger LOG =  
>> Logger.getLogger( Database.class ) ;
>> //log4j
>>      private static EntityManagerFactory entityManagerFactory ;
>>      private static final String JPA_FACTORY_NAME = "MyJpaFactory";
>>
>>      //
>> *******************************************************************************************
>>      private void closeEntityManager (
>>              final EntityManager em )
>>      {
>>              try
>>              {
>>                      if ( ( em != null ) &&
>>                              ( em.isOpen( ) ) )
>>                      {
>>                              em.close( ) ;
>>                      }
>>              }
>>              catch ( final Exception e )
>>              {
>>                      Database.LOG.error( e ) ;
>>              }
>>      }
>>
>>      //
>> *******************************************************************************************
>>      private void setupEntityManagerFactory ( )
>>      {
>>              if ( Database.entityManagerFactory == null )
>>              {
>>                      Database.entityManagerFactory =
>>                               
>> Persistence.createEntityManagerFactory( Database.JPA_FACTORY_NAME ) ;
>>              }
>>      }
>>
>>      //
>> *******************************************************************************************
>>      private EntityManager getEntityManager ( )
>>      {
>>              this.setupEntityManagerFactory( ) ;
>>              final EntityManager entityManager =
>> Database.entityManagerFactory.createEntityManager( ) ;
>>              entityManager.getTransaction( ).begin( );
>>              return entityManager ;
>>      }
>>
>>      //
>> *******************************************************************************************
>>      private EntityManager getEntityManagerWithOutTransaction ( )
>>      {
>>              this.setupEntityManagerFactory( ) ;
>>              return Database.entityManagerFactory.createEntityManager( ) ;
>>      }
>>      //
>> *******************************************************************************************
>>      private void logQuery (
>>              final String temp )
>>      {
>>              if ( temp != null )
>>              {
>>                      Database.LOG.debug( temp ) ;
>>              }
>>      }
>>      //
>> *******************************************************************************************
>>      public Account getAccountByBillingSystemAccountNumber (
>>              final String billingSystemAccountNumber )
>>      {
>>              final EntityManager em =  
>> this.getEntityManagerWithOutTransaction( ) ;
>>              return this.getAccountByBillingSystemAccountNumber(
>>                      billingSystemAccountNumber ,
>>                      em ,
>>                      true ) ;
>>      }
>>
>>      //
>> *******************************************************************************************
>>      protected Account getAccountByBillingSystemAccountNumber (
>>              final String billingSystemAccountNumber ,
>>              final EntityManager em ,
>>              final boolean canCloseEntityManager )
>>      {
>>              Account rtn = null ;
>>              try
>>              {
>>                      final String sql =
>>                                       "select * from ACCOUNT a "+
>>                                       "where
>> a.BILLING_SYSTEM_ACCOUNT_NUMBER = \'" +
>>                                     billingSystemAccountNumber + "\' " ;
>>                      final Query q = em.createNativeQuery( sql , 
>> Account.class ) ;
>>                      this.logQuery( sql ) ;
>>                      if ( q != null )
>>                      {
>>                              rtn = ( Account ) q.getResultList( ).get( 0 );
>>                      }
>>              }
>>              catch ( final NoResultException nre )
>>              {
>>                      rtn = null ;
>>              }
>>              finally
>>              {
>>                      if ( canCloseEntityManager )
>>                      {
>>                              this.closeEntityManager( em ) ;
>>                      }
>>              }
>>              return rtn ;
>>      }
>>      //
>> *******************************************************************************************
>>
>>       /* some other methods to access other tables
>>       .......
>>       */
>> }
>>
>> -- 
>> View this message in context:
>> http://n2.nabble.com/openjpa-ignoring-column-annotation-tp4286639p4287474.html
>> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> 
> Craig L Russell
> Architect, Sun Java Enterprise System http://db.apache.org/jdo
> 408 276-5638 mailto:[email protected]
> P.S. A good JDO? O, Gasp!
> 
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/openjpa-ignoring-column-annotation-tp4286639p4291966.html
Sent from the OpenJPA Users mailing list archive at Nabble.com.

Reply via email to