jnash67
(Jonathan Nash)
February 19, 2017, 8:42pm
#1
Does cuba platform support collections of embedded entities (@ElementCollection )? I’m guessing not because it’s not supported by the UI, but just thought I’d ask.
krivopustov
(Konstantin Krivopustov)
February 20, 2017, 10:00am
#2
@ElementCollection is not yet supported, however it’s on our backlog - see the linked issue.
system
(system)
February 20, 2017, 10:00am
#3
marc
(Marc)
April 27, 2020, 3:56pm
#4
Hi,
The linked issue link is broken.
What is the status of this?
peterson.br
(Peterson Machado)
April 28, 2020, 11:27am
#5
Hi @marc ,
I think this issue has been moved to github:
opened 09:31AM - 08 Nov 16 UTC
type: enhancement
''Possibly some of other JPA 2.0 features are also not supported by the platform… . ''
1) Create an embeddable class 'Expositions'
2) Create the corresponding table in the database
3) Create an entity 'Artist'
4) Add embeddable collection of the 'Expositions' to the 'Artist'-entity, as in the code below
```
public class Artist extends BaseIntegerIdEntity {
private static final long serialVersionUID = 2969222955466032141L;
@Column(name = "NAME", length = 30)
protected String name;
@ElementCollection
@CollectionTable(name = "aliases", joinColumns = @JoinColumn(name = "artist_id"))
@Column(name = "alias")
private List<String> aliases;
@ElementCollection
@CollectionTable(name = "expositions", joinColumns = @JoinColumn(name = "artist_id"))
private List<Expositions> expositions;
```
5) start the server
*AR:* embedded collection of primitives works well but embedding a colection of user defined type leads to the exception:
```
2016-11-08 12:19:06.827 ERROR [localhost-startStop-1] com.haulmont.cuba.core.sys.AppContextLoader - Error initializing application
org.springframework.transaction.CannotCreateTransactionException: Could not open JPA EntityManager for transaction; nested exception is javax.persistence.PersistenceException: java.lang.IllegalArgumentException: Property 'exposition' not found in bdsm$BdsmArtist
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:431) ~[spring-orm-4.3.1.RELEASE.jar:4.3.1.RELEASE]
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-4.3.1.RELEASE.jar:4.3.1.RELEASE]
at com.haulmont.cuba.core.sys.TransactionImpl.<init>(TransactionImpl.java:56) ~[cuba-core-6.3.2.jar:6.3.2]
at com.haulmont.cuba.core.sys.PersistenceImpl.createTransaction(PersistenceImpl.java:121) ~[cuba-core-6.3.2.jar:6.3.2]
at com.haulmont.cuba.security.app.LoginWorkerBean.loginAnonymous(LoginWorkerBean.java:213) ~[cuba-core-6.3.2.jar:6.3.2]
at com.haulmont.cuba.security.app.LoginWorkerBean.initializeAnonymousSession(LoginWorkerBean.java:511) ~[cuba-core-6.3.2.jar:6.3.2]
at com.haulmont.cuba.security.app.LoginWorkerBean.applicationStarted(LoginWorkerBean.java:521) ~[cuba-core-6.3.2.jar:6.3.2]
at com.haulmont.cuba.core.sys.AppContext.startContext(AppContext.java:234) ~[cuba-global-6.3.2.jar:6.3.2]
at com.haulmont.cuba.core.sys.AppContext$Internals.startContext(AppContext.java:289) ~[cuba-global-6.3.2.jar:6.3.2]
at com.haulmont.cuba.core.sys.AbstractWebAppContextLoader.contextInitialized(AbstractWebAppContextLoader.java:74) ~[cuba-global-6.3.2.jar:6.3.2]
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4813) [catalina.jar:8.0.35]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5272) [catalina.jar:8.0.35]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) [catalina.jar:8.0.35]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) [catalina.jar:8.0.35]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) [catalina.jar:8.0.35]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) [catalina.jar:8.0.35]
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092) [catalina.jar:8.0.35]
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834) [catalina.jar:8.0.35]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_101]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_101]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_101]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_101]
Caused by: javax.persistence.PersistenceException: java.lang.IllegalArgumentException: Property 'exposition' not found in bdsm$BdsmArtist
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:815) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:205) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:305) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:337) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:303) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.springframework.orm.jpa.JpaTransactionManager.createEntityManagerForTransaction(JpaTransactionManager.java:449) ~[spring-orm-4.3.1.RELEASE.jar:4.3.1.RELEASE]
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:369) ~[spring-orm-4.3.1.RELEASE.jar:4.3.1.RELEASE]
... 22 common frames omitted
Caused by: java.lang.IllegalArgumentException: Property 'exposition' not found in bdsm$BdsmArtist
at com.haulmont.chile.core.model.impl.MetaClassImpl.getPropertyNN(MetaClassImpl.java:107) ~[cuba-global-6.3.2.jar:6.3.2]
at com.haulmont.cuba.core.sys.persistence.EclipseLinkSessionEventListener.preLogin(EclipseLinkSessionEventListener.java:79) ~[cuba-core-6.3.2.jar:6.3.2]
at org.eclipse.persistence.sessions.SessionEventManager.preLogin(SessionEventManager.java:620) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.preConnectDatasource(DatabaseSessionImpl.java:797) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.login(DatabaseSessionImpl.java:773) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:267) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:731) ~[eclipselink-2.6.2.cuba9.jar:2.6.2.cuba9]
... 28 common frames omitted
```
---
Original issue: https://youtrack.haulmont.com/issue/PL-8160
Regards,
Peterson.
1 Like