OpenJPA
  1. OpenJPA
  2. OPENJPA-204

Nesting of Emebedded in Embeddable element

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Won't Fix
    • Affects Version/s: 0.9.6
    • Fix Version/s: None
    • Component/s: jpa
    • Labels:
      None

      Description

      Hi,

      In orm_1_0.xsd or orm-xsd.rsrc files under the <xsd:complexType name="embeddable-attributes"> the <xsd:element name="embedded" type="orm:embedded" minOccurs="0" maxOccurs="unbounded"/> is not present.

      Please let me know if there is any valid reason behind it.Was the embedded element in embeddable-attributes was accidently missed out?

      I faced the issue when i tried the example something like as shown below:

      class A
      {
      int id;
      B objB;

      }

      class B
      {
      String str1;
      Date d;
      C objC;
      }

      class C
      {
      String str2;
      }

      I wanted to persist object A into a single table by having object B as embedded and object B inturn having object C as embedded.
      My corresponding orm mapping file is as shown below:

      <?xml version="1.0" encoding="UTF-8"?>
      <entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm orm_1_0.xsd" version="1.0">

      <entity class="A">
      <table name="TableA"/>
      <attributes>
      <id name="id">
      <column name="ID"/>
      </id>
      <embedded name="objB"/>
      </attributes>
      </entity>

      <embeddable class="B">
      <attributes>
      <basic name="str1">
      <column name="COL2"/>
      </basic>
      <basic name="d">
      <column name="DateCol"/>
      </basic>
      <embedded name="objC"/>
      </embeddable>

      <embeddable class="C">
      <attributes>
      <basic name="str2">
      <column name="COL3"/>
      </basic>
      </embeddable>

      </entity-mappings>

      This was not possible due to orm schema restriction.

      Thanks,
      Regards,
      Sharath.H

        Issue Links

          Activity

          Hide
          Patrick Linskey added a comment -

          This is a limitation of the JPA spec. From section 9.1.34:

          <spec>Only Basic, Column, Lob, Temporal, and Enumerated mapping annotations may portably be used to map the persistent fields or properties of classes annotated as Embeddable.</spec>

          OpenJPA supports embedded fields in embeddable instances, as well as various other usages of embedded things, but those are extensions to the spec. Due to OPENJPA-125, you can only configure nested embeddeds via annotations currently.

          Marking this as WNF, although in some ways it might be better closed as a duplicate of OPENJPA-125, since once we resolve OPENJPA-125, there will be a way to do this in XML (albeit not the spec-defined XML).

          Note that the JPA spec team defines the orm.xsd; OpenJPA is just an implementation of that spec. So, we can't change the orm.xsd. I believe, however, that this is an issue that the JPA 2 spec team will probably consider.

          Show
          Patrick Linskey added a comment - This is a limitation of the JPA spec. From section 9.1.34: <spec>Only Basic, Column, Lob, Temporal, and Enumerated mapping annotations may portably be used to map the persistent fields or properties of classes annotated as Embeddable.</spec> OpenJPA supports embedded fields in embeddable instances, as well as various other usages of embedded things, but those are extensions to the spec. Due to OPENJPA-125 , you can only configure nested embeddeds via annotations currently. Marking this as WNF, although in some ways it might be better closed as a duplicate of OPENJPA-125 , since once we resolve OPENJPA-125 , there will be a way to do this in XML (albeit not the spec-defined XML). Note that the JPA spec team defines the orm.xsd; OpenJPA is just an implementation of that spec. So, we can't change the orm.xsd. I believe, however, that this is an issue that the JPA 2 spec team will probably consider.

            People

            • Assignee:
              Unassigned
              Reporter:
              sharath.h
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development