DDC-298: Allow Entity to hold a collection of a single primitive type #3743

Open
doctrinebot opened this Issue Feb 2, 2010 · 6 comments

2 participants

@doctrinebot

Jira issue originally created by user @beberlei:

Sometimes you want to save arbitrary information for an entity using a key -> value array-structure. JPA supports this by means of the @ElementCollection annotation with allows to specify HashMaps for example.

I propose a new AssocationMapping called "ElementMapping" / "ElementCollection" and annotations (options):

ElementCollection
<ins> elementTable
</ins> keyType
<ins> keyLength
</ins> keyColumnDefinition
<ins> valueType
</ins> valueLength
+ valueColumnDefinition

The key and value definitions are necessary for converting and schema generation.

The implementation would make use of the PersistentCollection at all times and work as any other persistent collection just with primitive types.

Restrictions for a first implementation:

  • Only available as a Lazy-Load Collection, no hydration with the source entity
  • Can't be used in queries alike "entity.colname.key = ?1"

Use-Case:

$entity->options['foo'] = 'bar';
$entity->options['bar'] = 'baz';

This could be done for 2.0 imho, adding the necessary changes and optimizations could then be scheduled for 2.1

@doctrinebot

Comment created by @beberlei:

In this implementation Schema-Tool would generate a table:

elementTable (entityid-1, ..., entityid-n, key, value) and using the Platform Type Generation of keyType and valueType

@doctrinebot

Comment created by @beberlei:

Column Names should be Change-able also since there could be people who name their primary keys "key" and "value" o_O

@doctrinebot

Comment created by @beberlei:

Ordering could be implemented on top of this using the @OrderColumn JPA implementation by adding another column to the table with a numeric order that will be "order by"'d on select time.

@doctrinebot

Comment created by @beberlei:

Pushed back

@doctrinebot

Comment created by myknbani:

Any news on this? It has been almost 3 years since its last update =)

@beberlei beberlei was assigned by doctrinebot Dec 6, 2015
@doctrinebot doctrinebot added this to the 2.x milestone Dec 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment