openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nikolas Everett" <nik9...@gmail.com>
Subject Re: UUIDs
Date Wed, 30 Apr 2008 19:09:19 GMT
Kevin,

Thanks for getting back to me.

Thats a cool generator.  I might use that sometime.  Unfortunately, the
UUIDs are keys into another system.  I'm just trying to get them to persist
them into the database as string and load them into java as UUIDs.

Thanks again,

--Nik

On Wed, Apr 30, 2008 at 2:57 PM, Kevin Sutter <kwsutter@gmail.com> wrote:

> :-)  Quiet doesn't mean we're not busy...  :-)
>
> My first thought when I read your append is why are you not just using the
> built-in UUID generator that OpenJPA provides?  OpenJPA allows you to use
> a
> generator on non-id fields.  We can either generate the UUID as a 16
> character string or a 32 character hex value.  Would this usage suffice
> for
> you, or do you have some other requirements for the use of the
> externalizer?
>
> Here's a link to the documentation on the UUID generator:
>
> http://openjpa.apache.org/docs/latest/manual/manual.html#jpa_overview_meta_gen
>
> Kevin
>
> On Wed, Apr 30, 2008 at 9:49 AM, Nikolas Everett <nik9000@gmail.com>
> wrote:
>
> > I tried the attached message on the users list but didn't get any
> > response.
> > Will someone on the dev listserve help?  I'm researching an ORM solution
> > for
> > our company, and can't in good conscience pick one with quiet listservs.
> > Thanks,
> >
> > --Nik
> >
> > ---------- Forwarded message ----------
> > From: Nikolas Everett <nik9000@gmail.com>
> > Date: Mon, Apr 28, 2008 at 5:20 PM
> > Subject: UUIDs
> > To: users@openjpa.apache.org
> >
> >
> > I tried to search the archives and didn't find anything on this.  I'm
> > using
> > openjpa 1.0.2 and having problems with UUIDs backed into postgres 8.2.
> >
> > I have a class like:
> > @Entity
> > @Table(uniqueConstraints={@UniqueConstraint(columnNames="uuid")})
> > public class Account {
> >    @Id
> >    @GeneratedValue(strategy=GenerationType.IDENTITY)
> >    private int id;
> >
> >    @Persistent
> >    @Column(nullable=false)
> >    @Externalizer("java.util.UUID.toString")
> >    @Factory("java.util.UUID.fromString")
> >    @ElementType(UUID.class)
> >    private UUID uuid;
> >
> > ...getters and setters...
> > }
> >
> > The uuid column is created as a character varying 255, which is fine for
> > now.
> >
> > I  have a method like this:
> >    protected Account getAccountByUuid(UUID uuid) {
> >        Query findAccount = this.em.createQuery("SELECT a FROM Account a
> > WHERE a.uuid = ?1");
> >        findAccount.setParameter(1, uuid);
> >        try {
> >            return (Account) findAccount.getSingleResult();
> >        } catch (NoResultException e) {
> >            Account account = new Account();
> >            account.setUuid(uuid);
> >            this.em.persist(account);
> >            return account;
> >        }
> >    }
> >
> > Which throws an exception like this:
> > Exception in thread "main" <openjpa-1.0.2-r420667:627158 nonfatal user
> > error> org.apache.openjpa.persistence.ArgumentException: The parameter
> "0"
> > is of type "java.util.UUID", but the declaration in the query is for
> type
> > "java.lang.String".
> >    at
> >
> >
> org.apache.openjpa.persistence.QueryImpl.validateParameter(QueryImpl.java:270)
> >    at
> >
> >
> org.apache.openjpa.persistence.QueryImpl.validateParameters(QueryImpl.java:250)
> >    at
> org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:231)
> >    at
> >
> >
> org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:300)
> >    at com.companyname.Classname.getAccountByUuid(FetchData.java:73)
> >
> > This isn't the behavior documented here:
> >
> >
> http://openjpa.apache.org/docs/latest/manual/ref_guide_pc_scos.html#d0e21916
> >
> > What can I do?
> >
> > Thanks in advance,
> >
> > --Nik
> >
>

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