openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sahoo <Sa...@Sun.COM>
Subject Re: ID class: no public string or class + string constructor?
Date Tue, 11 Sep 2007 07:05:27 GMT
Is PeoplesoftSegmentId an *inner* (i.e. non-static nested) class? Make 
it a static nested class or a top level class and try.

Thanks,
Sahoo

Gene Wu wrote:
> Here is the error stack:
>
> [WLServer TmsServer] javax.ejb.EJBException: nested exception is: <0|false|0.9.7>
org.apache.openjpa.persistence.PersistenceException:
> The id type "class com.werner.accounting.model.PeoplesoftSegmentEntity$PeoplesoftSegmentId"
specfied by persistent type "class com.wer
> er.accounting.model.PeoplesoftSegmentEntity" does not have a public string or class +
string constructor.
> [WLServer TmsServer] <0|false|0.9.7> org.apache.openjpa.persistence.PersistenceException:
The id type "class com.werner.accounting.mod
> l.PeoplesoftSegmentEntity$PeoplesoftSegmentId" specfied by persistent type "class com.werner.accounting.model.PeoplesoftSegmentEntity"
> does not have a public string or class + string constructor.
> [WLServer TmsServer]    at org.apache.openjpa.kernel.BrokerImpl.newObjectId(BrokerImpl.java:1120)
> [WLServer TmsServer]    at org.apache.openjpa.kernel.DelegatingBroker.newObjectId(DelegatingBroker.java:254)
> [WLServer TmsServer]    at org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:345)
> [WLServer TmsServer]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>
>
> BTW, I didn't find any IdClass test cases in OpenJPA test suit.
>
> Thanks
>
> Gene.
>
>
>
>   
>> Date: Mon, 10 Sep 2007 22:15:36 -0700
>> From: gene_wu@hotmail.com
>> To: dev@openjpa.apache.org
>> Subject: Re: ID class: no public string or class + string constructor?
>>
>>
>> I got the same exception. 
>>
>> nested exception is: <0|false|0.9.7>
>> org.apache.openjpa.persistence.PersistenceException: The id type "class
>> com.werner.accounting.model.PeoplesoftSegmentId" specfied by persistent type
>> "class com.werner.accounting.model.PeoplesoftSegmentEntity" does not have a
>> public string or class + string constructor
>>
>> ID Class is:
>>
>> public class PeoplesoftSegmentId implements Serializable {
>>
>> 	public String _businessUnit;
>>
>> 	public String _vasTourId;
>>
>> 	/** Creates a new instance of PeoplesoftSegmentId */
>> 	public PeoplesoftSegmentId() {
>>
>> 	}
>>
>>
>> 	@Override
>> 	public int hashCode() {
>>
>> 		int hash = 0;
>> 		hash += (this._businessUnit != null ? this._businessUnit.hashCode() : 0);
>> 		hash += (this._vasTourId != null ? this._vasTourId.hashCode() : 0);
>> 		return hash;
>> 	}
>>
>> 	@Override
>> 	public boolean equals(Object object) {
>>
>> 		if(!(object instanceof PeoplesoftSegmentId)) {
>> 			return false;
>> 		}
>> 		PeoplesoftSegmentId other = (PeoplesoftSegmentId)object;
>> 		if(this._businessUnit != other._businessUnit
>> 			&& (this._businessUnit == null ||
>> !this._businessUnit.equals(other._businessUnit)))
>> 			return false;
>> 		if(this._vasTourId != other._vasTourId
>> 			&& (this._vasTourId == null ||
>> !this._vasTourId.equals(other._vasTourId)))
>> 			return false;
>> 		return true;
>> 	}
>>
>>     public String toString() {
>>         return _businessUnit + ":" + _vasTourId;
>>     }
>> }
>>
>> Entity Class is:
>> @Entity
>> @IdClass(PeoplesoftSegmentId.class)
>> public class PeoplesoftSegmentEntity implements Serializable {
>>
>> 	@Id
>> 	private String _businessUnit;
>>
>> 	@Id
>> 	private String _vasTourId;
>>
>> ...
>>
>> Thanks
>>
>> Gene.
>>
>>
>> Craig L Russell wrote:
>>     
>>> Are you using @Id or @IdClass or @EmbeddedId annotations?
>>>
>>> I'm looking at 2.1.4, 9.1.14, and 9.1.15 and trying to figure out  
>>> which case you're having trouble with.
>>>
>>> Craig
>>>
>>> On Mar 26, 2007, at 5:37 PM, Craig L Russell wrote:
>>>
>>>       
>>>> Hi Jeff,
>>>>
>>>> It would be useful if you could include a code fragment and the @Id  
>>>> annotation for your class to diagnose this.
>>>>
>>>> Thanks,
>>>>
>>>> Craig
>>>>
>>>> On Mar 26, 2007, at 4:35 PM, jeff wrote:
>>>>
>>>>         
>>>>> getting this error:
>>>>>
>>>>> The id type "class com.sun.portal.pom.FooId" specfied by  
>>>>> persistent type "class com.sun.portal.pom.Foo" does not have a  
>>>>> public string or class + string constructor.
>>>>>
>>>>> this error doesn't seem to correspond to any of the requirements  
>>>>> of an ID class as defined in the spec.
>>>>>
>>>>> my first guess is that it wants me to add an constructor that  
>>>>> takes the result of toString() and constructs the ID class based  
>>>>> on that, but adding a constructor that takes a string arg didn't  
>>>>> change the error. i don't understand what it would want for the  
>>>>> "class + string" constructor, so i was not sure what to try there.
>>>>>
>>>>> can someone help interpret this error?
>>>>> thanks!
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------
>>>>> Never miss an email again!
>>>>> Yahoo! Toolbar alerts you the instant new Mail arrives. Check it out.
>>>>>           
>>>> Craig Russell
>>>> DB PMC, OpenJPA PPMC
>>>> clr@apache.org http://db.apache.org/jdo
>>>>
>>>>
>>>>         
>>> Craig Russell
>>> Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
>>> 408 276-5638 mailto:Craig.Russell@sun.com
>>> P.S. A good JDO? O, Gasp!
>>>
>>>
>>>  
>>>
>>>       
>> -- 
>> View this message in context: http://www.nabble.com/ID-class%3A-no-public-string-or-class-%2B-string-constructor--tf3470194.html#a12608201
>> Sent from the OpenJPA Developers mailing list archive at Nabble.com.
>>
>>     
>
> _________________________________________________________________
> Capture your memories in an online journal!
> http://www.reallivemoms.com?ocid=TXT_TAGHM&loc=us
>
>   

Mime
View raw message