cuba-platform / cuba-gradle-plugin

Gradle plugin for building CUBA platform and applications
https://www.cuba-platform.com
Apache License 2.0
15 stars 18 forks source link

Exception when enhancing project with mixed Java / Kotlin entities #153

Closed alexbudarov closed 3 years ago

alexbudarov commented 3 years ago

Environment

Description of the bug or enhancement

Sample project - attached It has Java and Kotlin entities referencing each other.

kshop.zip

When building the project, the following error occurs:

> Task :app-global:compileKotlin FAILED
Exception in thread "main" Local Exception Stack: 
Exception [EclipseLink-40007] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.StaticWeaveException
Exception Description: An exception was thrown while weaving: [Ljava.lang.String;@382db087
Internal Exception: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [cuba] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class com.company.kshop.entity.Car] uses a non-entity [class com.company.kshop.entity.CarModel] as target entity in the relationship attribute [field model].
    at org.eclipse.persistence.exceptions.StaticWeaveException.exceptionPerformWeaving(StaticWeaveException.java:140)
    at org.eclipse.persistence.tools.weaving.jpa.CubaStaticWeave.main(CubaStaticWeave.java:37)
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [cuba] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class com.company.kshop.entity.Car] uses a non-entity [class com.company.kshop.entity.CarModel] as target entity in the relationship attribute [field model].
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.createPredeployFailedPersistenceException(EntityManagerSetupImpl.java:2104)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:2080)
    at org.eclipse.persistence.tools.weaving.jpa.StaticWeaveClassTransformer.buildClassTransformers(StaticWeaveClassTransformer.java:128)
    at org.eclipse.persistence.tools.weaving.jpa.StaticWeaveClassTransformer.<init>(StaticWeaveClassTransformer.java:78)
    at org.eclipse.persistence.tools.weaving.jpa.StaticWeaveProcessor.process(StaticWeaveProcessor.java:252)
    at org.eclipse.persistence.tools.weaving.jpa.StaticWeaveProcessor.performWeaving(StaticWeaveProcessor.java:174)
    at org.eclipse.persistence.tools.weaving.jpa.StaticWeave.start(StaticWeave.java:117)
    at org.eclipse.persistence.tools.weaving.jpa.CubaStaticWeave.main(CubaStaticWeave.java:35)
Caused by: Exception [EclipseLink-28018] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.EntityManagerSetupException
Exception Description: Predeployment of PersistenceUnit [cuba] failed.
Internal Exception: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class com.company.kshop.entity.Car] uses a non-entity [class com.company.kshop.entity.CarModel] as target entity in the relationship attribute [field model].
    at org.eclipse.persistence.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:233)
    ... 8 more
Caused by: Exception [EclipseLink-7250] (Eclipse Persistence Services - 2.7.3.14-cuba): org.eclipse.persistence.exceptions.ValidationException
Exception Description: [class com.company.kshop.entity.Car] uses a non-entity [class com.company.kshop.entity.CarModel] as target entity in the relationship attribute [field model].
    at org.eclipse.persistence.exceptions.ValidationException.nonEntityTargetInRelationship(ValidationException.java:1383)
    at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.RelationshipAccessor.getReferenceDescriptor(RelationshipAccessor.java:569)
    at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processForeignKeyRelationship(ObjectAccessor.java:678)
    at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ObjectAccessor.processOwningMappingKeys(ObjectAccessor.java:752)
    at org.eclipse.persistence.internal.jpa.metadata.accessors.mappings.ManyToOneAccessor.process(ManyToOneAccessor.java:130)
    at org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processOwningRelationshipAccessors(MetadataProject.java:1666)
    at org.eclipse.persistence.internal.jpa.metadata.MetadataProject.processStage3(MetadataProject.java:1919)
    at org.eclipse.persistence.internal.jpa.metadata.MetadataProcessor.processORMMetadata(MetadataProcessor.java:584)
    at org.eclipse.persistence.internal.jpa.deployment.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:629)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:2001)
    ... 6 more
alexbudarov commented 3 years ago

https://www.cuba-platform.ru/discuss/t/kotlin-java-sushhnosti/5379/2