Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/Development/JPA 2.0/new collection mappings"

(Summary)
Line 10: Line 10:
  
 
See section 2.1.5, 9.1.2, 9.1.4, 9.1.7, 9.1.11 and 9.1.35 for details.
 
See section 2.1.5, 9.1.2, 9.1.4, 9.1.7, 9.1.11 and 9.1.35 for details.
 +
 +
=== Examples ===
 +
 +
<source lang="java">
 +
@ElementCollection
 +
@Column(name="DESIGNATION")
 +
// CollectionTable will default in this case, Entity name + "_" + attribute name
 +
// JoinColumns will default in this case which are different from BasicCollection collection table default
 +
private Collection<String> designations;
 +
</source>
 +
 +
<source lang="java>
 +
@ElementCollection
 +
@MapKeyColumn(name="Q_DATE")
 +
@Column(name="QUOTE")
 +
@CollectionTable(name="EXPERT_QUOTES", joinColumns=@JoinColumn(name="EBC_ID"))
 +
public Map<Date, String> getQuotes() {
 +
    return quotes;
 +
}
 +
</source>
 +
 +
<source lang="java>
 +
// An element collection representing an aggregate collection mapping.
 +
@ElementCollection
 +
// CollectionTable will default
 +
// Column is not applicable here.
 +
// JoinColumns will default.
 +
// Both expert and novice consumers will define attribute overrides and
 +
// association overrides to apply to their respective tables.
 +
private Collection<Record> records;
 +
 +
...
 +
 +
@Embeddable
 +
public class Record {
 +
</source>
  
 
== Functional Requirements ==
 
== Functional Requirements ==

Revision as of 13:46, 2 February 2009

Element Collections

JPA 2.0 Root | bug 248293

Summary

JPA 2.0 introduces support for collections of Embeddables and primitives through the @ElementCollection annotation. Support for ElementCollection of primitives will be easily supported through our BasicCollection and BasicMap support and will only require annotation processing updates. Support for lists of Embeddables should be supportable through the AggregateCollectionMapping. Support for Maps of Embeddables will be more difficult and will require completion of the Map Collections support feature.

@OrderBy must also be supported on these collection types.

See section 2.1.5, 9.1.2, 9.1.4, 9.1.7, 9.1.11 and 9.1.35 for details.

Examples

@ElementCollection
@Column(name="DESIGNATION")
// CollectionTable will default in this case, Entity name + "_" + attribute name
// JoinColumns will default in this case which are different from BasicCollection collection table default
private Collection<String> designations;
@ElementCollection
@MapKeyColumn(name="Q_DATE")
@Column(name="QUOTE")
@CollectionTable(name="EXPERT_QUOTES", joinColumns=@JoinColumn(name="EBC_ID"))
public Map<Date, String> getQuotes() {
    return quotes;
}
// An element collection representing an aggregate collection mapping.
@ElementCollection
// CollectionTable will default
// Column is not applicable here.
// JoinColumns will default.
// Both expert and novice consumers will define attribute overrides and
// association overrides to apply to their respective tables.
private Collection<Record> records;
 
...
 
@Embeddable
public class Record {

Functional Requirements

Design

Documentation

Testing

Work Required

  1. Develop model for testing
    approx 2 days
  2. Update Annotation Processing
    approx 2 days - processing @ElementCollection annotation / and XML for primitive
    approx 5 days - processing @ElementCollection annotation / and XML for Embeddables
    approx 5 days - integrating Map collections support for Embeddables

Open Issues

  1. How does the new JPA @CollectionTable relate to the existing EclipseLink @CollectionTable and what does it mean for users upgrading from one to the other.

Back to the top