Then you probably have a classpath/packaging issue. The OpenJPA error contains a nested class name (see $ in the name): com.werner.accounting.model.PeoplesoftSegmentEntity$PeoplesoftSegmentId.

Thanks,
Sahoo

Gene Wu wrote:
no, it's a top level class.

I also tried static nested class. Still the same issue I met.

Thanks,
Gene


Date: Tue, 11 Sep 2007 12:35:27 +0530
From: [EMAIL PROTECTED]
Subject: Re: ID class: no public string or class + string constructor?
To: dev@openjpa.apache.org

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: [EMAIL PROTECTED]
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
[EMAIL PROTECTED] http://db.apache.org/jdo


Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
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


_________________________________________________________________
Capture your memories in an online journal!
http://www.reallivemoms.com?ocid=TXT_TAGHM&loc=us

Reply via email to