error: cannot access MappedSuperclass on JPA

580 Views Asked by At

I'm making a migration from Spring boot 2.7 to Spring boot 3.0, I found an error: cannot access MappedSuperclass and i suspect that is from JPA, I already changed dependencies and all javax for jakarta but I'm still having the following error, also I don't have any errors showing in the IDE, just I recieve the log at runtime.

This is the error, I'm just going to share a part because I't too big but all follows the same structure, just in different functions.

> Task :compileJava FAILED
warning: unknown enum constant GenerationType.IDENTITY
  reason: class file for javax.persistence.GenerationType not found
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant FetchType.LAZY
  reason: class file for javax.persistence.FetchType not found
warning: unknown enum constant CascadeType.ALL
  reason: class file for javax.persistence.CascadeType not found
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant FetchType.LAZY
warning: unknown enum constant CascadeType.ALL
warning: unknown enum constant GenerationType.IDENTITY
warning: unknown enum constant GenerationType.IDENTITY
error: cannot access MappedSuperclass
  class file for javax.persistence.MappedSuperclass not found
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:24: error: cannot find symbol
    payload.setCosAttachmentId(disputeAttachment.getAttachmentObjectStorageId());
           ^
  symbol:   method setCosAttachmentId(String)
  location: variable payload of type AddAttachmentPayload
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:25: error: cannot find symbol
unknown enum constant GenerationType.IDENTITY

    payload.setEsAttachmentRefId(disputeAttachmentEventData.getEsAttachmentRefId());
           ^
  symbol:   method setEsAttachmentRefId(String)
  location: variable payload of type AddAttachmentPayload
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:26: error: cannot find symbol
    payload.setFileName(disputeAttachment.getFileName());
unknown enum constant FetchType.LAZY

           ^
  symbol:   method setFileName(String)
unknown enum constant CascadeType.ALL

  location: variable payload of type AddAttachmentPayload
unknown enum constant GenerationType.IDENTITY

unknown enum constant FetchType.LAZY

/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:27: error: cannot find symbol
unknown enum constant CascadeType.ALL

unknown enum constant GenerationType.IDENTITY

    payload.setFederalFlag(disputeAttachmentEventData.getFederalFlag());
           ^
cannot access MappedSuperclass

  symbol:   method setFederalFlag(String)
  location: variable payload of type AddAttachmentPayload
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:28: error: cannot find symbol
    payload.setTenantId(tenantId);
           ^
  symbol:   method setTenantId(String)
  location: variable payload of type AddAttachmentPayload
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:29: error: cannot find symbol
    payload.setCreatedBy(entitlement.getData().getEmail());
           ^
  symbol:   method setCreatedBy(String)
  location: variable payload of type AddAttachmentPayload
/Users/paolabeltran/Documents/GitHub/ar-dispute-es-updater/src/main/java/com/ibm/ar/dispute/es/updater/utils/AttachmentPayloadConverter.java:36: error: cannot find symbol
    String createdByMail = user.getContent().getMail()[0];
                               ^
  symbol:   method getContent()
  location: variable user of type BluepagesResponse


All the classes where I'm recieving the errors have the same structure, so I'm just going to show one example

import jakarta.persistence.Entity;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;


@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class AddAttachmentPayload {

  private String cosAttachmentId;

  private String esAttachmentRefId;

  private String fileName;

  private String createdBy;

  private String federalFlag;

  private String tenantId;

}

And this are my dependencies at build.gradle

 dependencies {
    // Spring dependencies
    implementation('org.springframework.boot:spring-boot-starter-web')
    implementation('org.springframework.boot:spring-boot-starter-validation')
    implementation('org.springframework.boot:spring-boot-starter-security')
    implementation('org.springframework.boot:spring-boot-starter-data-jpa')
    implementation('org.springframework.boot:spring-boot-starter-actuator')
    implementation('org.springframework.boot:spring-boot-starter-data-redis')
    annotationProcessor("org.springframework.boot:spring-boot-starter-data-jpa")

    // Querydsl
    //implementation group: 'com.querydsl', name: 'querydsl-jpa', version: querydslVersion
    implementation("com.querydsl:querydsl-jpa:${querydslVersion}:jakarta")
    implementation group: 'com.querydsl', name: 'querydsl-sql', version: querydslVersion
    implementation group: 'com.querydsl', name: 'querydsl-sql-spring', version: querydslVersion
    implementation group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
    implementation group: 'com.querydsl', name: 'querydsl-core', version: querydslVersion

    annotationProcessor("com.querydsl:querydsl-apt:${querydslVersion}:jakarta")
    annotationProcessor("jakarta.persistence:jakarta.persistence-api:3.1.0")
}
1

There are 1 best solutions below

0
Lohit Akshay On

I've faced this error too and due to this import (MappedSuperClass), annotation processor for lombok breaks and hence the errors for getters and setters. Just use javax while importing MappedSuperClass and not jakarta and these errors go away. You can use jakarta for other imports except:

 javax.sql. 
 javax.net.
 javax.xml.

and they work fine.

You can use javax import for MappedSuperClass by including the following in your pom:

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>javax.persistence-api</artifactId>
    <version>2.2</version>
</dependency>