openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pinaki Poddar" <ppod...@bea.com>
Subject RE: [jira] Created: (OPENJPA-348) Composite PK with association
Date Tue, 04 Sep 2007 15:57:02 GMT

The persistent fields including the identity fields are all declared
public and being accessed/mutated publicly by the test class.
Firstly, public-ness of persistent field is not a good practice.
Secondly, if a class X is not persistent by itself but directly
manipulating public fields of a Entity class Y, then X is termed as
Persistent-Aware. Persistent-Aware classes need no special annotation
but requires to be enhanced. 
In this case, Test class is persistence-aware and most likely has not
been enhanced.



Pinaki Poddar
972.834.2865
 

>-----Original Message-----
>From: Eddie Man (JIRA) [mailto:jira@apache.org] 
>Sent: Tuesday, September 04, 2007 1:57 AM
>To: dev@openjpa.apache.org
>Subject: [jira] Created: (OPENJPA-348) Composite PK with association
>
>Composite PK with association
>-----------------------------
>
>                 Key: OPENJPA-348
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-348
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.0.0
>            Reporter: Eddie Man
>
>
>I got an exception while using a association within a composite PK
>
>A.java
>========
>@Entity
>public class A {
>	@Id
>	public int id;
>	
>	@OneToMany(mappedBy="a", cascade=CascadeType.ALL)
>	public HashSet<B> bs = new HashSet<B>();
>
>}
>
>B.java
>========
>@Entity
>@IdClass(BPK.class)
>public class B {
>	
>	@Id
>	public int id;
>	
>	@Id
>	@ManyToOne(cascade=CascadeType.ALL)
>	@JoinColumns({@JoinColumn(name="aid")})
>	public A a;
>	
>	@Basic
>	public String name;
>}
>
>BPK.class
>============
>public class BPK {
>	
>	public int id;
>	
>	public int a;
>
>	@Override
>	public boolean equals(Object aObj) {
>		return super.equals(aObj);
>	}
>	
>	@Override
>	public int hashCode() {
>		return super.hashCode();
>	}
>}
>
>
>Here is my code for inserting data to db:
>EntityManager manager = 
>Persistence.createEntityManagerFactory("openjpa").createEntityM
>anager();
>EntityTransaction transaction = manager.getTransaction(); 
>transaction.begin();
>		
>A a = new A();
>a.id = 1;
>		
>B b = new B();
>b.id = 2;
>b.a = a;		
>		
>a.bs.add(b);
>		
>manager.persist(a);
>transaction.commit();
>manager.close();
>
>Exception :
>==============
>Exception in thread "main" <openjpa-1.0.0-r420667:568756 fatal 
>general error> 
>org.apache.openjpa.persistence.PersistenceException: null
>	at 
>org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentT
>ypes(AbstractBrokerFactory.java:303)
>	at 
>org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(Abstr
>actBrokerFactory.java:197)
>	at 
>org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(Del
>egatingBrokerFactory.java:142)
>	at 
>org.apache.openjpa.persistence.EntityManagerFactoryImpl.createE
>ntityManager(EntityManagerFactoryImpl.java:192)
>	at 
>org.apache.openjpa.persistence.EntityManagerFactoryImpl.createE
>ntityManager(EntityManagerFactoryImpl.java:145)
>	at 
>org.apache.openjpa.persistence.EntityManagerFactoryImpl.createE
>ntityManager(EntityManagerFactoryImpl.java:56)
>	at Test.main(Test.java:10)
>Caused by: java.lang.NullPointerException
>	at 
>org.apache.openjpa.enhance.ManagedClassSubclasser.setDetachedSt
>ate(ManagedClassSubclasser.java:275)
>	at 
>org.apache.openjpa.enhance.ManagedClassSubclasser.configureMeta
>Data(ManagedClassSubclasser.java:213)
>	at 
>org.apache.openjpa.enhance.ManagedClassSubclasser.prepareUnenha
>ncedClasses(ManagedClassSubclasser.java:137)
>	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>	at 
>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso
>rImpl.java:39)
>	at 
>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho
>dAccessorImpl.java:25)
>	at java.lang.reflect.Method.invoke(Method.java:597)
>	at 
>org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentT
>ypes(AbstractBrokerFactory.java:287)
>	... 6 more
>
>--
>This message is automatically generated by JIRA.
>-
>You can reply to this email to add a comment to the issue online.
>
>

Notice:  This email message, together with any attachments, may contain information  of  BEA
Systems,  Inc.,  its subsidiaries  and  affiliated entities,  that may be confidential,  proprietary,
 copyrighted  and/or legally privileged, and is intended solely for the use of the individual
or entity named in this message. If you are not the intended recipient, and have received
this message in error, please immediately return this by email and then delete it.

Mime
View raw message