I've also had the same issue, and the only solution was to use native query.
On OpenJPA documentation, section 7.10 XML Column Mapping, it says: " XML
schema must not contain namespace declarations."

I don't think it is supported as of now, but someone from OpenJPA should be
able to tell us for sure.

Regards,
Vitor

On Jan 14, 2008 2:50 AM, Łukasz Budnik <[EMAIL PROTECTED]> wrote:

> Hi all!
>
> I have a problem, maybe someone knows how to solve it ;)
>
> I use OpenJPA + JAXB with IBM DB2 pureXML engine.
>
> In my entity class a have a field:
>
> @Persistent
> @Strategy ("org.apache.openjpa.jdbc.meta.strats.XMLValueHandler")
> private PatientType patientinfo;
>
> I can persist objects, retrieve them, JAXB (un)marshaling works
> without any trouble.
>
> BUT when I need to perform operations on XML documents that have a
> namespace there is some trouble...
>
> given simple select query that uses patientinfo is an XML column:
>
> select object(o) from ErsPatient as o where o.idpatient >= 200 and
> o.patientinfo.pesel = 'my_pesel_number_here'
>
> OpenJPA generates following query:
>
> SELECT t0.idpatient, t0.patientinfo FROM DB2ERS.ERS_PATIENTS t0 WHERE
> (t0.idpatient >= ? AND XMLEXISTS('$t0.patientinfo/*[pesel = $Parm]'
> PASSING t0.patientinfo AS "t0.patientinfo", CAST(? AS VARCHAR(254)) AS
> "Parm"))
>
> which is basically correct, but the result is empty list...
>
> reason? missing namespace declaration.
>
> when I execute native query like this (note the namespace declaration):
>
> List<ErsPatient> list = em.createNativeQuery("SELECT t0.idpatient,
> t0.patientinfo FROM DB2ERS.ERS_PATIENTS t0 WHERE (t0.idpatient >= 200
> AND XMLEXISTS('declare default element namespace
> \"http://www.dataweaver.org/patient\<http://www.dataweaver.org/patient%5C>";
> $t0.patientinfo/*[pesel =
> $pesel]' PASSING t0.patientinfo AS \"t0.patientinfo\", CAST(?1 AS
> VARCHAR(254)) AS \"pesel\"))", ErsPatient.class).setParameter(1,
> "my_pesel_number_goes_here").getResultList();
>
> every thing is OK, I have only added the declaration:
>
> 'declare default element namespace "http://www.dataweaver.org/patient";;'
>
> maybe someone else uses OpenJPA with XML databases?
>
> maybe OpenJPA developers have namespaces it in their road map?
>
> thanks in advance for any help!
>
> best regards
> Łukasz
>

Reply via email to