Details
Description
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 + elementTable + keyType + keyLength + keyColumnDefinition + valueType + 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
Activity
Benjamin Eberlei
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Description |
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): {code} ElementCollection + elementTable + keyType + keyLength + keyColumnDefinition + valueType + valueLength + valueColumnDefinition {code} 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" This could be done for 2.0 imho, adding the necessary changes and optimizations could then be scheduled for 2.1 |
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): {code} ElementCollection + elementTable + keyType + keyLength + keyColumnDefinition + valueType + valueLength + valueColumnDefinition {code} 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: {code} $entity->options['foo'] = 'bar'; $entity->options['bar'] = 'baz'; {code} This could be done for 2.0 imho, adding the necessary changes and optimizations could then be scheduled for 2.1 |
Roman S. Borschel
made changes -
| Fix Version/s | 2.1 [ 10022 ] |
Benjamin Eberlei
made changes -
| Fix Version/s | 2.x [ 10090 ] | |
| Fix Version/s | 2.1 [ 10022 ] |
Benjamin Eberlei
made changes -
| Workflow | jira [ 10829 ] | jira-feedback [ 13841 ] |
Benjamin Eberlei
made changes -
| Workflow | jira-feedback [ 13841 ] | jira-feedback2 [ 15705 ] |
Benjamin Eberlei
made changes -
| Workflow | jira-feedback2 [ 15705 ] | jira-feedback3 [ 17962 ] |
This list may be incomplete, as errors occurred whilst retrieving source from linked applications:
- Request to http://www.doctrine-project.org/fisheye/ failed: Error in remote call to 'FishEye 0 (http://www.doctrine-project.org/fisheye/)' (http://www.doctrine-project.org/fisheye) [AbstractRestCommand{path='/rest-service-fe/search-v1/crossRepositoryQuery', params={query=DDC-298, expand=changesets[-21:-1].revisions[0:29],reviews}, methodType=GET}] : Received status code 503 (Service Temporarily Unavailable)
In this implementation Schema-Tool would generate a table:
elementTable (entity_id-1, ..., entity_id-n, key, value) and using the Platform Type Generation of keyType and valueType