openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Curtis <curti...@gmail.com>
Subject Re: openjpa ignoring column annotation
Date Tue, 12 Jan 2010 19:06:32 GMT
http://n2.nabble.com/How-to-remove-an-entity-from-a-result-list-error-result-list-is-read-only-td209686.html

On Tue, Jan 12, 2010 at 8:41 AM, racarlson <racarlson@mediacomcc.com> wrote:

>
> 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:Craig.Russell@sun.com
> > 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.
>



-- 
Thanks,
Rick

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message