Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 397316 | Differences between
and this patch

Collapse All | Expand All

(-)a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/advanced-ddl-orm.xml (-55 / +56 lines)
Lines 37-42 Link Here
37
            </element-collection>
37
            </element-collection>
38
        </attributes>
38
        </attributes>
39
    </mapped-superclass>
39
    </mapped-superclass>
40
41
    <mapped-superclass class="Utensil">
42
        <attributes>
43
            <id name="id">
44
                <generated-value strategy="TABLE" generator="XML_UTENSIL_ID_GENERATOR"/>
45
                <table-generator name="XML_UTENSIL_ID_GENERATOR" table="JPA21_XML_PK_SEQ" pk-column-name="XML_SEQ_NAME" value-column-name="XML_SEQ_COUNT"  pk-column-value="XML_UTENSIL_SEQ">
46
                    <index name="XML_TABLE_GENERATOR_INDEX" column-list="XML_SEQ_COUNT,XML_SEQ_NAME"/>
47
                </table-generator>
48
            </id>
49
            <basic name="serialTag">
50
                <column name="SERIAL_TAG"/>
51
            </basic>
52
        </attributes>
53
    </mapped-superclass>
40
    
54
    
41
    <entity name="XMLRunner" class="Runner">
55
    <entity name="XMLRunner" class="Runner">
42
        <table name="JPA21_XML_DLL_RUNNER"/>
56
        <table name="JPA21_XML_DLL_RUNNER"/>
Lines 63-69 Link Here
63
                    <inverse-foreign-key name="XMLRunners_Races_Inverse_Foreign_Key" foreign-key-definition="FOREIGN KEY (RACE_ID) REFERENCES JPA21_XML_DDL_RACE (ID)"/>
77
                    <inverse-foreign-key name="XMLRunners_Races_Inverse_Foreign_Key" foreign-key-definition="FOREIGN KEY (RACE_ID) REFERENCES JPA21_XML_DDL_RACE (ID)"/>
64
                </join-table>
78
                </join-table>
65
            </many-to-many>
79
            </many-to-many>
66
            <element-collection name="personalBests">
80
            <!-- Currently a convert can not be specified with a column as a -->
81
            <!-- result of JPA 2.1 xsd bug. Until it is fixed, this is mapped in annotations -->
82
            <!-- element-collection name="personalBests">
67
                <map-key-convert converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
83
                <map-key-convert converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
68
                <map-key-column name="DISTANCE"/>
84
                <map-key-column name="DISTANCE"/>
69
                <column name="TIME"/>
85
                <column name="TIME"/>
Lines 72-78 Link Here
72
                    <join-column name="RUNNER_ID"/>
88
                    <join-column name="RUNNER_ID"/>
73
                    <foreign-key name="XML_Runner_PBS_Foreign_Key" foreign-key-definition="FOREIGN KEY (RUNNER_ID) REFERENCES JPA21_XML_DDL_RUNNER (ID)"/>
89
                    <foreign-key name="XML_Runner_PBS_Foreign_Key" foreign-key-definition="FOREIGN KEY (RUNNER_ID) REFERENCES JPA21_XML_DDL_RUNNER (ID)"/>
74
                </collection-table>
90
                </collection-table>
75
            </element-collection>
91
            </element-collection -->
76
            <embedded name="info">
92
            <embedded name="info">
77
                <convert attribute-name="level" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
93
                <convert attribute-name="level" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
78
                <convert attribute-name="health" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
94
                <convert attribute-name="health" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
Lines 148-205 Link Here
148
        </attributes>
164
        </attributes>
149
    </entity>
165
    </entity>
150
    
166
    
151
    <embeddable class="RunnerInfo">
152
        <attributes>
153
            <basic name="level">
154
                <column name="R_LEVEL"/>
155
            </basic>
156
            <basic name="health">
157
                <column name="R_HEALTH"/>
158
            </basic>
159
        </attributes>
160
    </embeddable>
161
    
162
    <embeddable class="RunnerStatus">
163
        <attributes>
164
            <basic name="runningStatus">
165
                <column name="R_STATUS"/>
166
            </basic>
167
        </attributes>
168
    </embeddable>
169
    
170
    <embeddable class="Responsibility">
171
        <attributes>
172
            <basic name="uniqueIdentifier"/>
173
            <basic name="description"/>
174
        </attributes>
175
    </embeddable>
176
177
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter"/>
178
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter"/>
179
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter"/>
180
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
181
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.GenderConverter"/>
182
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
183
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
184
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LongToStringConverter" auto-apply="true"/>
185
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.ResponsibilityConverter"/>
186
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.RunningStatusConverter"/>
187
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter"/>
188
    
189
    <mapped-superclass class="Utensil">
190
        <attributes>
191
            <id name="id">
192
                <generated-value strategy="TABLE" generator="XML_UTENSIL_ID_GENERATOR"/>
193
                <table-generator name="XML_UTENSIL_ID_GENERATOR" table="JPA21_XML_PK_SEQ" pk-column-name="XML_SEQ_NAME" value-column-name="XML_SEQ_COUNT"  pk-column-value="XML_UTENSIL_SEQ">
194
                    <index name="XML_TABLE_GENERATOR_INDEX" column-list="XML_SEQ_COUNT,XML_SEQ_NAME"/>
195
                </table-generator>
196
            </id>
197
            <basic name="serialTag">
198
                <column name="SERIAL_TAG"/>
199
            </basic>
200
        </attributes>
201
    </mapped-superclass>
202
    
203
    <entity name="XMLFork" class="Fork">
167
    <entity name="XMLFork" class="Fork">
204
        <table name="JPA21_XML_FORK">
168
        <table name="JPA21_XML_FORK">
205
            <!-- default the name to JPA21_XML_FORK_INDEX_STYLE_COLOR -->
169
            <!-- default the name to JPA21_XML_FORK_INDEX_STYLE_COLOR -->
Lines 239-245 Link Here
239
            </id>
203
            </id>
240
            <many-to-many name="forks" mapped-by="users"/>
204
            <many-to-many name="forks" mapped-by="users"/>
241
        </attributes>
205
        </attributes>
242
243
    </entity>
206
    </entity>
207
    
208
    <embeddable class="RunnerInfo">
209
        <attributes>
210
            <basic name="level">
211
                <column name="R_LEVEL"/>
212
            </basic>
213
            <basic name="health">
214
                <column name="R_HEALTH"/>
215
            </basic>
216
        </attributes>
217
    </embeddable>
218
    
219
    <embeddable class="RunnerStatus">
220
        <attributes>
221
            <basic name="runningStatus">
222
                <column name="R_STATUS"/>
223
            </basic>
224
        </attributes>
225
    </embeddable>
226
    
227
    <embeddable class="Responsibility">
228
        <attributes>
229
            <basic name="uniqueIdentifier"/>
230
            <basic name="description"/>
231
        </attributes>
232
    </embeddable>
233
234
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.AccomplishmentConverter"/>
235
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.AgeConverter"/>
236
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DateConverter"/>
237
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
238
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.GenderConverter"/>
239
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
240
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
241
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LongToStringConverter" auto-apply="true"/>
242
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.ResponsibilityConverter"/>
243
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.RunningStatusConverter"/>
244
    <converter class="org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter"/>
244
245
245
</entity-mappings>
246
</entity-mappings>
(-)a/jpa/eclipselink.jpa.test/resource/eclipselink-jpa21-model/advanced-orm.xml (-18 / +22 lines)
Lines 111-119 Link Here
111
                <table-generator name="XML_DEPT_TABLE_GENERATOR" table="JPA21_XML_SEQ" pk-column-name="SEQ_NAME" value-column-name="SEQ_COUNT" pk-column-value="XML_DEPT_SEQ"/>
111
                <table-generator name="XML_DEPT_TABLE_GENERATOR" table="JPA21_XML_SEQ" pk-column-name="SEQ_NAME" value-column-name="SEQ_COUNT" pk-column-value="XML_DEPT_SEQ"/>
112
            </id>
112
            </id>
113
            <basic name="name"/>
113
            <basic name="name"/>
114
            <one-to-one name="departmentHead">
115
                <join-column name="DEPT_HEAD" nullable="true"/>
116
            </one-to-one>
117
            <one-to-many name="managers">
114
            <one-to-many name="managers">
118
                <join-table name="JPA21_XML_DEPT_EMP">
115
                <join-table name="JPA21_XML_DEPT_EMP">
119
                    <join-column name="DEPT_ID"/>
116
                    <join-column name="DEPT_ID"/>
Lines 124-129 Link Here
124
                </cascade>
121
                </cascade>
125
            </one-to-many>
122
            </one-to-many>
126
            <one-to-many name="employees" mapped-by="department"/>
123
            <one-to-many name="employees" mapped-by="department"/>
124
            <one-to-one name="departmentHead">
125
                <join-column name="DEPT_HEAD" nullable="true"/>
126
            </one-to-one>
127
        </attributes>
127
        </attributes>
128
    </entity>
128
    </entity>
129
    
129
    
Lines 132-141 Link Here
132
        <secondary-table name="JPA21_XML_SALARY">
132
        <secondary-table name="JPA21_XML_SALARY">
133
            <primary-key-join-column name="EMP_ID" referenced-column-name="EMP_ID"/>
133
            <primary-key-join-column name="EMP_ID" referenced-column-name="EMP_ID"/>
134
        </secondary-table>
134
        </secondary-table>
135
        <object-type-converter name="sex" data-type="String" object-type="Employee$Gender">
135
        <!-- Invalid JPA 2.1 orm.xml content, moved to class. -->
136
        <!--  object-type-converter name="sex" data-type="String" object-type="Employee$Gender">
136
            <conversion-value data-value="F" object-value="Female"/>
137
            <conversion-value data-value="F" object-value="Female"/>
137
            <conversion-value data-value="M" object-value="Male"/>
138
            <conversion-value data-value="M" object-value="Male"/>
138
        </object-type-converter>
139
        </object-type-converter -->
139
        <named-stored-procedure-query name="XMLReadUsingMultipleResultSetMappings" procedure-name="XML_Read_Multiple_Result_Sets">
140
        <named-stored-procedure-query name="XMLReadUsingMultipleResultSetMappings" procedure-name="XML_Read_Multiple_Result_Sets">
140
            <result-set-mapping>XMLEmployeeResultSetMapping</result-set-mapping>
141
            <result-set-mapping>XMLEmployeeResultSetMapping</result-set-mapping>
141
            <result-set-mapping>XMLAddressResultSetMapping</result-set-mapping>
142
            <result-set-mapping>XMLAddressResultSetMapping</result-set-mapping>
Lines 143-154 Link Here
143
            <result-set-mapping>XMLEmployeeConstructorResultSetMapping</result-set-mapping>
144
            <result-set-mapping>XMLEmployeeConstructorResultSetMapping</result-set-mapping>
144
        </named-stored-procedure-query>
145
        </named-stored-procedure-query>
145
        <named-stored-procedure-query name="XMLReadUsingUnNamedRefCursor" procedure-name="XML_Read_Using_UnNamed_Cursor">
146
        <named-stored-procedure-query name="XMLReadUsingUnNamedRefCursor" procedure-name="XML_Read_Using_UnNamed_Cursor">
146
            <parameter mode="REF_CURSOR" type="Void"/>   
147
            <parameter mode="REF_CURSOR" class="Void"/>   
147
            <result-class>Employee</result-class>
148
            <result-class>Employee</result-class>
148
        </named-stored-procedure-query>
149
        </named-stored-procedure-query>
149
        <named-stored-procedure-query name="XMLReadUsingNamedRefCursors" procedure-name="XML_Read_Using_Named_Cursor">
150
        <named-stored-procedure-query name="XMLReadUsingNamedRefCursors" procedure-name="XML_Read_Using_Named_Cursor">
150
            <parameter name="CUR1" mode="REF_CURSOR" type="Void"/>
151
            <parameter name="CUR1" mode="REF_CURSOR" class="Void"/>
151
            <parameter name="CUR2" mode="REF_CURSOR" type="Void"/>
152
            <parameter name="CUR2" mode="REF_CURSOR" class="Void"/>
152
            <result-class>Employee</result-class>
153
            <result-class>Employee</result-class>
153
            <result-class>Address</result-class>
154
            <result-class>Address</result-class>
154
        </named-stored-procedure-query>
155
        </named-stored-procedure-query>
Lines 157-166 Link Here
157
        </sql-result-set-mapping>
158
        </sql-result-set-mapping>
158
        <sql-result-set-mapping name="XMLEmployeeConstructorResultSetMapping">
159
        <sql-result-set-mapping name="XMLEmployeeConstructorResultSetMapping">
159
            <constructor-result target-class="EmployeeDetails">
160
            <constructor-result target-class="EmployeeDetails">
160
                <column-result name="EMP_ID" class="Integer"/>
161
                <column name="EMP_ID" class="Integer"/>
161
                <column-result name="F_NAME" class="String"/>
162
                <column name="F_NAME" class="String"/>
162
                <column-result name="L_NAME" class="String"/>
163
                <column name="L_NAME" class="String"/>
163
                <column-result name="R_COUNT" class="Integer"/>
164
                <column name="R_COUNT" class="Integer"/>
164
            </constructor-result>
165
            </constructor-result>
165
        </sql-result-set-mapping>
166
        </sql-result-set-mapping>
166
        <named-entity-graph>
167
        <named-entity-graph>
Lines 185-193 Link Here
185
            <basic name="lastName">
186
            <basic name="lastName">
186
                <column name="L_NAME"/>
187
                <column name="L_NAME"/>
187
            </basic>
188
            </basic>
188
            <basic name="gender">
189
            <!-- Invalid JPA 2.1 orm.xml content, moved to class. -->
190
            <!-- basic name="gender">
189
                <convert>sex</convert>
191
                <convert>sex</convert>
190
            </basic>
192
            </basic -->
191
            <basic name="salary">
193
            <basic name="salary">
192
                <column table="JPA21_XML_SALARY"/>
194
                <column table="JPA21_XML_SALARY"/>
193
            </basic>
195
            </basic>
Lines 260-266 Link Here
260
        <discriminator-value>P</discriminator-value>
262
        <discriminator-value>P</discriminator-value>
261
        <discriminator-column name="PROJ_TYPE"/>
263
        <discriminator-column name="PROJ_TYPE"/>
262
        <sql-result-set-mapping name="XMLProjectResultSetMapping">
264
        <sql-result-set-mapping name="XMLProjectResultSetMapping">
263
            <column-result name="BUDGET_SUM"/>
264
            <entity-result entity-class="Project"/>
265
            <entity-result entity-class="Project"/>
265
            <entity-result entity-class="SmallProject" discriminator-column="SMALL_DESCRIM">
266
            <entity-result entity-class="SmallProject" discriminator-column="SMALL_DESCRIM">
266
                <field-result name="id" column="SMALL_ID"/>
267
                <field-result name="id" column="SMALL_ID"/>
Lines 269-281 Link Here
269
                <field-result name="teamLeader" column="SMALL_TEAMLEAD"/>
270
                <field-result name="teamLeader" column="SMALL_TEAMLEAD"/>
270
                <field-result name="version" column="SMALL_VERSION"/>
271
                <field-result name="version" column="SMALL_VERSION"/>
271
            </entity-result>
272
            </entity-result>
273
            <column-result name="BUDGET_SUM"/>
272
        </sql-result-set-mapping>
274
        </sql-result-set-mapping>
273
        <pre-persist method-name="prePersist"/>
275
        <pre-persist method-name="prePersist"/>
274
        <post-persist method-name="postPersist"/>
276
        <post-persist method-name="postPersist"/>
275
        <pre-remove method-name="preRemove"/>
277
        <pre-remove method-name="preRemove"/>
276
        <post-remove method-name="postRemove"/>
278
        <post-remove method-name="postRemove"/>
277
        <post-update method-name="postUpdate"/>
278
        <pre-update method-name="preUpdate"/>
279
        <pre-update method-name="preUpdate"/>
280
        <post-update method-name="postUpdate"/>
279
        <post-load method-name="postLoad"/>
281
        <post-load method-name="postLoad"/>
280
        <attributes>
282
        <attributes>
281
            <id name="id">
283
            <id name="id">
Lines 373-379 Link Here
373
                    <inverse-join-column name="RACE_ID" referenced-column-name="ID"/>
375
                    <inverse-join-column name="RACE_ID" referenced-column-name="ID"/>
374
                </join-table>
376
                </join-table>
375
            </many-to-many>
377
            </many-to-many>
376
            <element-collection name="personalBests">
378
            <!-- Currently a convert can not be specified with a column as a -->
379
            <!-- result of JPA 2.1 xsd bug. Until it is fixed, this is mapped in annotations -->
380
            <!-- element-collection name="personalBests">
377
                <map-key-convert converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
381
                <map-key-convert converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter"/>
378
                <map-key-column name="DISTANCE"/>
382
                <map-key-column name="DISTANCE"/>
379
                <column name="TIME"/>
383
                <column name="TIME"/>
Lines 381-387 Link Here
381
                <collection-table name="JPA21_XML_RUNNER_PBS">
385
                <collection-table name="JPA21_XML_RUNNER_PBS">
382
                    <join-column name="RUNNER_ID"/>
386
                    <join-column name="RUNNER_ID"/>
383
                </collection-table>
387
                </collection-table>
384
            </element-collection>
388
            </element-collection -->
385
            <embedded name="info">
389
            <embedded name="info">
386
                <convert attribute-name="level" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
390
                <convert attribute-name="level" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.LevelConverter"/>
387
                <convert attribute-name="health" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
391
                <convert attribute-name="health" converter="org.eclipse.persistence.testing.models.jpa21.advanced.converters.HealthConverter"/>
(-)a/jpa/eclipselink.jpa.test/resource/eclipselink-plsql-model/plsql-orm.xml (-2 / +2 lines)
Lines 75-82 Link Here
75
    </plsql-record>
75
    </plsql-record>
76
    <plsql-table name="PLSQL_P.PLSQL_ADDRESS_LIST" compatible-type="PLSQL_P_PLSQL_ADDRESS_LIST" nested-type="PLSQL_P.PLSQL_ADDRESS_REC"/>
76
    <plsql-table name="PLSQL_P.PLSQL_ADDRESS_LIST" compatible-type="PLSQL_P_PLSQL_ADDRESS_LIST" nested-type="PLSQL_P.PLSQL_ADDRESS_REC"/>
77
    <plsql-table name="PLSQL_P.PLSQL_PHONE_LIST" compatible-type="PLSQL_P_PLSQL_PHONE_LIST" nested-type="PLSQL_P.PLSQL_PHONE_REC"/>
77
    <plsql-table name="PLSQL_P.PLSQL_PHONE_LIST" compatible-type="PLSQL_P_PLSQL_PHONE_LIST" nested-type="PLSQL_P.PLSQL_PHONE_REC"/>
78
    <oracle-array name="VARRAY_NUMERO_UNO" nestedType="VARCHAR"/>
78
    <oracle-array name="VARRAY_NUMERO_UNO" nested-type="VARCHAR"/>
79
    <oracle-array name="VARRAY_NUMERO_DOS" nestedType="NUMBER"/>
79
    <oracle-array name="VARRAY_NUMERO_DOS" nested-type="NUMBER"/>
80
    <oracle-object name="OBJECT_NUMERO_UNO">
80
    <oracle-object name="OBJECT_NUMERO_UNO">
81
        <field name="OO_FLD1" database-type="VARCHAR_TYPE"/>
81
        <field name="OO_FLD1" database-type="VARCHAR_TYPE"/>
82
        <field name="OO_FLD2" database-type="NUMERIC_TYPE"/>
82
        <field name="OO_FLD2" database-type="NUMERIC_TYPE"/>
(-)a/jpa/eclipselink.jpa.test/resource/eclipselinkorm/eclipselink-xml-extended-model/advanced-tpt-multitenant-entity-mappings.xml (-1 / +1 lines)
Lines 96-103 Link Here
96
                </join-table>
96
                </join-table>
97
            </many-to-many>
97
            </many-to-many>
98
            <element-collection name="honors">
98
            <element-collection name="honors">
99
                <collection-table name="XML_CANDIDATE_HONORS"/>
100
                <column name="HONOR"/>
99
                <column name="HONOR"/>
100
                <collection-table name="XML_CANDIDATE_HONORS"/>
101
            </element-collection>
101
            </element-collection>
102
        </attributes>
102
        </attributes>
103
    </entity>
103
    </entity>
(-)a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/xml/Employee.java (+10 lines)
Lines 27-32 import org.eclipse.persistence.config.QueryHints; Link Here
27
import org.eclipse.persistence.sessions.Record;
27
import org.eclipse.persistence.sessions.Record;
28
import org.eclipse.persistence.sessions.Session;
28
import org.eclipse.persistence.sessions.Session;
29
29
30
@ObjectTypeConverter(
31
        name="sex",
32
        dataType=String.class,
33
        objectType=org.eclipse.persistence.testing.models.jpa21.advanced.xml.Employee.Gender.class,
34
        conversionValues={
35
            @ConversionValue(dataValue="F", objectValue="Female"),
36
            @ConversionValue(dataValue="M", objectValue="Male")
37
        }
38
    )
30
public class Employee implements Serializable, Cloneable {
39
public class Employee implements Serializable, Cloneable {
31
    public enum EmployeeStatus {FULL_TIME, PART_TIME, CONTRACT}
40
    public enum EmployeeStatus {FULL_TIME, PART_TIME, CONTRACT}
32
    public enum Gender { Female, Male }
41
    public enum Gender { Female, Male }
Lines 37-42 public class Employee implements Serializable, Cloneable { Link Here
37
    private Integer id;
46
    private Integer id;
38
    private Integer version;
47
    private Integer version;
39
    
48
    
49
    @Convert("sex")
40
    private Gender gender;
50
    private Gender gender;
41
    private EmployeeStatus status;
51
    private EmployeeStatus status;
42
    
52
    
(-)a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/xml/Runner.java (+25 lines)
Lines 22-27 import java.util.HashMap; Link Here
22
import java.util.List;
22
import java.util.List;
23
import java.util.Map;
23
import java.util.Map;
24
24
25
import javax.persistence.CollectionTable;
26
import javax.persistence.Column;
27
import javax.persistence.Convert;
28
import javax.persistence.Converts;
29
import javax.persistence.ForeignKey;
30
import javax.persistence.ElementCollection;
31
import javax.persistence.JoinColumn;
32
import javax.persistence.MapKeyColumn;
33
34
import org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter;
35
import org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter;
25
import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Gender;
36
import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Gender;
26
37
27
public class Runner extends Athlete {
38
public class Runner extends Athlete {
Lines 30-35 public class Runner extends Athlete { Link Here
30
    protected RunnerInfo info;
41
    protected RunnerInfo info;
31
    protected List<Race> races;
42
    protected List<Race> races;
32
    protected Map<ShoeTag, Shoe> shoes;
43
    protected Map<ShoeTag, Shoe> shoes;
44
45
    // This is mapped here until the JPA schema is corrected. Currently
46
    // cannot specify a convert with a column in JPA (with XML validation on)
47
    @ElementCollection
48
    @Column(name="TIME")
49
    @MapKeyColumn(name="DISTANCE")
50
    @CollectionTable(
51
        name="JPA21_XML_RUNNER_PBS",
52
        joinColumns=@JoinColumn(name="RUNNER_ID")
53
    )
54
    @Converts({
55
        @Convert(attributeName="key", converter = DistanceConverter.class),
56
        @Convert(converter = TimeConverter.class)
57
    })
33
    protected Map<String, String> personalBests;
58
    protected Map<String, String> personalBests;
34
59
35
    public Runner() {
60
    public Runner() {
(-)a/jpa/eclipselink.jpa.test/src/org/eclipse/persistence/testing/models/jpa21/advanced/xml/ddl/Runner.java (+28 lines)
Lines 18-23 import java.util.HashMap; Link Here
18
import java.util.List;
18
import java.util.List;
19
import java.util.Map;
19
import java.util.Map;
20
20
21
import javax.persistence.CollectionTable;
22
import javax.persistence.Column;
23
import javax.persistence.Convert;
24
import javax.persistence.Converts;
25
import javax.persistence.ElementCollection;
26
import javax.persistence.ForeignKey;
27
import javax.persistence.JoinColumn;
28
import javax.persistence.MapKeyColumn;
29
30
import org.eclipse.persistence.testing.models.jpa21.advanced.converters.DistanceConverter;
31
import org.eclipse.persistence.testing.models.jpa21.advanced.converters.TimeConverter;
21
import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Gender;
32
import org.eclipse.persistence.testing.models.jpa21.advanced.enums.Gender;
22
33
23
public class Runner extends Athlete {
34
public class Runner extends Athlete {
Lines 26-31 public class Runner extends Athlete { Link Here
26
    protected RunnerInfo info;
37
    protected RunnerInfo info;
27
    protected List<Race> races;
38
    protected List<Race> races;
28
    protected Map<ShoeTag, Shoe> shoes;
39
    protected Map<ShoeTag, Shoe> shoes;
40
41
    // This is mapped here until the JPA schema is corrected. Currently
42
    // cannot specify a convert with a column in JPA (with XML validation on)
43
    @ElementCollection
44
    @Column(name="TIME")
45
    @MapKeyColumn(name="DISTANCE")
46
    @CollectionTable(
47
        name="JPA21_XML_DDL_RUNNER_PBS",
48
        joinColumns=@JoinColumn(name="RUNNER_ID"),
49
        foreignKey=@ForeignKey(
50
                name="XML_Runner_PBS_Foreign_Key",
51
                foreignKeyDefinition="FOREIGN KEY (RUNNER_ID) REFERENCES JPA21_XML_DDL_RUNNER (ID)")
52
    )
53
    @Converts({
54
        @Convert(attributeName="key", converter = DistanceConverter.class),
55
        @Convert(converter = TimeConverter.class)
56
    })
29
    protected Map<String, String> personalBests;
57
    protected Map<String, String> personalBests;
30
58
31
    public Runner() {
59
    public Runner() {
(-)a/jpa/org.eclipse.persistence.jpa/resource/org/eclipse/persistence/jpa/eclipselink_orm_2_5.xsd (-10 / +10 lines)
Lines 2138-2144 Link Here
2138
      </xsd:documentation>
2138
      </xsd:documentation>
2139
    </xsd:annotation>
2139
    </xsd:annotation>
2140
    <xsd:sequence>
2140
    <xsd:sequence>
2141
        <xsd:element name="column-result" type="orm:column-result" minOccurs="0" maxOccurs="unbounded"/>
2141
        <xsd:element name="column" type="orm:column-result" minOccurs="0" maxOccurs="unbounded"/>
2142
    </xsd:sequence>
2142
    </xsd:sequence>
2143
    <xsd:attribute name="target-class" type="xsd:string" use="required"/>
2143
    <xsd:attribute name="target-class" type="xsd:string" use="required"/>
2144
  </xsd:complexType>
2144
  </xsd:complexType>
Lines 2326-2345 Link Here
2326
          </xsd:choice>
2326
          </xsd:choice>
2327
        </xsd:sequence>
2327
        </xsd:sequence>
2328
      </xsd:choice>
2328
      </xsd:choice>
2329
      <xsd:element name="column" type="orm:column" minOccurs="0"/>
2329
      <xsd:choice>
2330
      <xsd:choice>
2330
        <xsd:sequence>
2331
        <xsd:sequence>
2331
          <xsd:element name="column" type="orm:column" minOccurs="0"/>
2332
          <xsd:choice>
2332
          <xsd:choice>
2333
            <xsd:element name="temporal" type="orm:temporal" minOccurs="0"/>
2333
            <xsd:element name="temporal" type="orm:temporal" minOccurs="0"/>
2334
            <xsd:element name="enumerated" type="orm:enumerated" minOccurs="0"/>
2334
            <xsd:element name="enumerated" type="orm:enumerated" minOccurs="0"/>
2335
            <xsd:element name="lob" type="orm:lob" minOccurs="0"/>
2335
            <xsd:element name="lob" type="orm:lob" minOccurs="0"/>
2336
          </xsd:choice>
2336
          </xsd:choice>
2337
        </xsd:sequence>
2337
        </xsd:sequence>
2338
        <xsd:choice minOccurs="0" maxOccurs="unbounded">
2338
        <xsd:sequence>
2339
          <xsd:element name="attribute-override" type="orm:attribute-override"/>
2339
          <xsd:element name="attribute-override" type="orm:attribute-override" minOccurs="0" maxOccurs="unbounded"/>
2340
          <xsd:element name="association-override" type="orm:association-override"/>
2340
          <xsd:element name="association-override" type="orm:association-override" minOccurs="0" maxOccurs="unbounded"/>
2341
          <xsd:element name="convert" type="orm:convert"/>
2341
          <xsd:element name="convert" type="orm:convert" minOccurs="0" maxOccurs="unbounded"/>   
2342
        </xsd:choice>
2342
        </xsd:sequence>
2343
      </xsd:choice>
2343
      </xsd:choice>
2344
      <xsd:choice minOccurs="0" maxOccurs="2">
2344
      <xsd:choice minOccurs="0" maxOccurs="2">
2345
        <xsd:element name="converter" type="orm:converter"/>
2345
        <xsd:element name="converter" type="orm:converter"/>
Lines 2347-2355 Link Here
2347
        <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
2347
        <xsd:element name="object-type-converter" type="orm:object-type-converter"/>
2348
        <xsd:element name="struct-converter" type="orm:struct-converter"/>
2348
        <xsd:element name="struct-converter" type="orm:struct-converter"/>
2349
      </xsd:choice>
2349
      </xsd:choice>
2350
      <xsd:choice>
2350
      <xsd:choice minOccurs="0">
2351
          <xsd:element name="collection-table" type="orm:collection-table" minOccurs="0"/>
2351
          <xsd:element name="collection-table" type="orm:collection-table"/>
2352
          <xsd:element name="field" type="orm:field" minOccurs="0"/>
2352
          <xsd:element name="field" type="orm:field"/>
2353
      </xsd:choice>
2353
      </xsd:choice>
2354
      <xsd:element name="cascade-on-delete" type="xsd:boolean" minOccurs="0"/>
2354
      <xsd:element name="cascade-on-delete" type="xsd:boolean" minOccurs="0"/>
2355
      <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
2355
      <xsd:element name="join-fetch" type="orm:join-fetch-type" minOccurs="0"/>
(-)a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/xml/XMLEntityMappingsMappingProject.java (-7 / +20 lines)
Lines 1031-1037 public class XMLEntityMappingsMappingProject extends org.eclipse.persistence.ses Link Here
1031
        descriptor.setJavaClass(ConstructorResultMetadata.class);
1031
        descriptor.setJavaClass(ConstructorResultMetadata.class);
1032
        
1032
        
1033
        // Element mappings - must remain in order of definition in XML.
1033
        // Element mappings - must remain in order of definition in XML.
1034
        descriptor.addMapping(getColumnResultsMapping());
1034
        descriptor.addMapping(getConstructorColumnMapping());
1035
        
1035
        
1036
        // Attribute mappings.
1036
        // Attribute mappings.
1037
        descriptor.addMapping(getTargetClassAttributeMapping());
1037
        descriptor.addMapping(getTargetClassAttributeMapping());
Lines 3231-3239 public class XMLEntityMappingsMappingProject extends org.eclipse.persistence.ses Link Here
3231
        descriptor.setJavaClass(SQLResultSetMappingMetadata.class);
3231
        descriptor.setJavaClass(SQLResultSetMappingMetadata.class);
3232
        
3232
        
3233
        // Element mappings - must remain in order of definition in XML.
3233
        // Element mappings - must remain in order of definition in XML.
3234
        descriptor.addMapping(getEntityResultsMapping());
3234
        descriptor.addMapping(getEntityResultMapping());
3235
        descriptor.addMapping(getConstructorResultsMapping());
3235
        descriptor.addMapping(getConstructorResultMapping());
3236
        descriptor.addMapping(getColumnResultsMapping());
3236
        descriptor.addMapping(getColumnResultMapping());
3237
        
3237
        
3238
        // Attribute mappings.
3238
        // Attribute mappings.
3239
        descriptor.addMapping(getNameAttributeMapping());
3239
        descriptor.addMapping(getNameAttributeMapping());
Lines 4185-4191 public class XMLEntityMappingsMappingProject extends org.eclipse.persistence.ses Link Here
4185
    /**
4185
    /**
4186
     * INTERNAL:
4186
     * INTERNAL:
4187
     */
4187
     */
4188
    protected XMLCompositeCollectionMapping getColumnResultsMapping() {
4188
    protected XMLCompositeCollectionMapping getColumnResultMapping() {
4189
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4189
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4190
        mapping.setAttributeName("m_columnResults");
4190
        mapping.setAttributeName("m_columnResults");
4191
        mapping.setGetMethodName("getColumnResults");
4191
        mapping.setGetMethodName("getColumnResults");
Lines 4258-4264 public class XMLEntityMappingsMappingProject extends org.eclipse.persistence.ses Link Here
4258
    /**
4258
    /**
4259
     * INTERNAL:
4259
     * INTERNAL:
4260
     */
4260
     */
4261
    protected XMLCompositeCollectionMapping getConstructorResultsMapping() {
4261
    protected XMLCompositeCollectionMapping getConstructorColumnMapping() {
4262
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4263
        mapping.setAttributeName("m_columnResults");
4264
        mapping.setGetMethodName("getColumnResults");
4265
        mapping.setSetMethodName("setColumnResults");
4266
        mapping.setReferenceClass(ColumnResultMetadata.class);
4267
        mapping.setXPath("orm:column");
4268
        return mapping;
4269
    }
4270
    
4271
    /**
4272
     * INTERNAL:
4273
     */
4274
    protected XMLCompositeCollectionMapping getConstructorResultMapping() {
4262
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4275
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4263
        mapping.setAttributeName("m_constructorResults");
4276
        mapping.setAttributeName("m_constructorResults");
4264
        mapping.setGetMethodName("getConstructorResults");
4277
        mapping.setGetMethodName("getConstructorResults");
Lines 4497-4503 public class XMLEntityMappingsMappingProject extends org.eclipse.persistence.ses Link Here
4497
    /**
4510
    /**
4498
     * INTERNAL:
4511
     * INTERNAL:
4499
     */
4512
     */
4500
    protected XMLCompositeCollectionMapping getEntityResultsMapping() {
4513
    protected XMLCompositeCollectionMapping getEntityResultMapping() {
4501
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4514
        XMLCompositeCollectionMapping mapping = new XMLCompositeCollectionMapping();
4502
        mapping.setAttributeName("m_entityResults");
4515
        mapping.setAttributeName("m_entityResults");
4503
        mapping.setGetMethodName("getEntityResults");
4516
        mapping.setGetMethodName("getEntityResults");
(-)a/jpa/org.eclipse.persistence.jpa/src/org/eclipse/persistence/internal/jpa/metadata/xml/XMLEntityMappingsReader.java (-1 / +23 lines)
Lines 40-53 import javax.xml.validation.Schema; Link Here
40
import javax.xml.validation.SchemaFactory;
40
import javax.xml.validation.SchemaFactory;
41
41
42
import org.eclipse.persistence.config.PersistenceUnitProperties;
42
import org.eclipse.persistence.config.PersistenceUnitProperties;
43
import org.eclipse.persistence.exceptions.EclipseLinkException;
43
import org.eclipse.persistence.exceptions.ValidationException;
44
import org.eclipse.persistence.exceptions.ValidationException;
44
import org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider;
45
import org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider;
45
46
46
import org.eclipse.persistence.oxm.XMLConstants;
47
import org.eclipse.persistence.oxm.XMLConstants;
47
import org.eclipse.persistence.oxm.XMLContext;
48
import org.eclipse.persistence.oxm.XMLContext;
48
import org.eclipse.persistence.oxm.XMLUnmarshaller;
49
import org.eclipse.persistence.oxm.XMLUnmarshaller;
50
import org.xml.sax.ErrorHandler;
49
import org.xml.sax.InputSource;
51
import org.xml.sax.InputSource;
50
import org.xml.sax.SAXException;
52
import org.xml.sax.SAXException;
53
import org.xml.sax.SAXParseException;
51
import org.xml.sax.XMLReader;
54
import org.xml.sax.XMLReader;
52
55
53
/**
56
/**
Lines 362-367 public class XMLEntityMappingsReader { Link Here
362
     */
365
     */
363
    private static void useLocalSchemaForUnmarshaller(XMLUnmarshaller unmarshaller, Schema schema) {
366
    private static void useLocalSchemaForUnmarshaller(XMLUnmarshaller unmarshaller, Schema schema) {
364
        try {
367
        try {
368
            
369
            unmarshaller.setErrorHandler(new ErrorHandler() {
370
                @Override
371
                public void error(SAXParseException exception) throws SAXException {
372
                    throw exception;
373
                }
374
375
                @Override
376
                public void fatalError(SAXParseException exception) throws SAXException {
377
                    throw exception;
378
                }
379
380
                @Override
381
                public void warning(SAXParseException exception) throws SAXException {
382
                    if (exception.getException() instanceof EclipseLinkException) {
383
                        throw (EclipseLinkException) exception.getCause();
384
                    }
385
                }
386
            });
387
            
365
            unmarshaller.setSchema(schema);
388
            unmarshaller.setSchema(schema);
366
        } catch (UnsupportedOperationException ex) {
389
        } catch (UnsupportedOperationException ex) {
367
            // Some parsers do not support setSchema.  In that case, setup validation another way.
390
            // Some parsers do not support setSchema.  In that case, setup validation another way.
368
- 

Return to bug 397316