Also, you could try removing single quotes from your JPQL string:
"Select c from Platform c where c.id = 8"
Regards,
Milosz
> Try turning on SQL trace to see what SQL is being generated from your
> JPQL.
>
> Rick
>
>
>
> On Sep 8, 2009, at 3:54 AM, "B.L. Zeebub"
> <roger.varley@googlemail.com> wrote:
>
> >
> >
> >
> > Jean-Baptiste BRIAUD -- Novlog wrote:
> >>
> >> Did you try GenerationType.IDENTITY ?
> >> @GeneratedValue(strategy = GenerationType.IDENTITY)
> >>
> >> I think it should work with int but I prefer long instead.
> >>
> >
> > GenerationType.IDENTITY appears to make no difference. However,
> > suprisingly
> > (to me anyway)
> >
> > @Test
> > public void getPlatformById() {
> > Platform platform = (Platform) em.find(Platform.class, 8);
> > assertNotNull(platform);
> > }
> >
> > works and returns the correct platform entity although platform.getId
> > ()
> > still returns 0.
> >
> > @Test
> > public void getPlatformByQueryById() {
> > String jpql = "Select c from Platform c where c.id = '8'";
> > Platform platform = (Platform) em.createQuery
> > (jpql).getSingleResult();
> > assertNotNull(platform);
> > }
> >
> > This fails with a no instance found exception from OpenJPA
> >
> > Regards
> >
> > On Sep 8, 2009, at 10:56 , B.L. Zeebub wrote:
> >
> >>
> >> Hi
> >>
> >> I have attached my entity definition below. This was created over a
> >> pre-existing database. I create the EntityManagerFactory to obtain
> >> the
> >> entitymanager (em) as normal and execute the code;
> >>
> >> String jpql = "select c from Platform c";
> >> em.getTransaction().begin();
> >> entities = (List) em.createQuery(jpql).getResultList();
> >> em.getTransaction().commit();
> >>
> >> I get the list of Platform entities as expected. Looping through the
> >> list,
> >> getPlatformName() returns the text as expected, but getId() always
> >> returns 0
> >> (zero) for all members of the list. Any ideas as to what I've missed.
> >>
> >> Regards
> >>
> >> @Entity
> >> @Table(name="Platform")
> >> public class Platform implements Serializable {
> >> private static final long serialVersionUID = 1L;
> >>
> >> @Id
> >> @GeneratedValue(strategy=GenerationType.AUTO)
> >> @Column(name="id", unique=true, nullable=false)
> >> private int id;
> >>
> >> @Column(name="PlatformName", length=32)
> >> private String platformName;
> >>
> >> //bi-directional many-to-one association to PEcu
> >> @OneToMany(mappedBy="platform")
> >> private Set<PEcu> pecus;
> >>
> >> public Platform() {
> >> }
> >>
> >> public int getId() {
> >> //TODO: Remove
> >> System.out.println("Platform.getId() called - " + this.id);
> >> return this.id;
> >> }
> >>
> >> public void setId(int id) {
> >> this.id = id;
> >> }
> >>
> >> public String getPlatformName() {
> >> //TODO: Remove
> >> System.out.println("Platform.getPlatform() called - " +
> >> this.platformName);
> >> return this.platformName;
> >> }
> >>
> >> public void setPlatformName(String platformName) {
> >> this.platformName = platformName;
> >> }
> >>
> >> public Set<PEcu> getPecus() {
> >> return this.pecus;
> >> }
> >>
> >> public void setPecus(Set<PEcu> pecus) {
> >> this.pecus = pecus;
> >> }
> >>
> >> }
> >> --
> >> View this message in context:
> >> http://n2.nabble.com/NEWBIE-OpenJPA-Cannot-get-id-field-returned-tp3601995p3601995.html
> >> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> >>
> >
> >
> >
> >
> > --
> > View this message in context: http://n2.nabble.com/NEWBIE-OpenJPA-Cannot-get-id-field-returned-tp3601995p3602236.html
> > Sent from the OpenJPA Users mailing list archive at Nabble.com.
>
|