DiscriminatorValue Type Discriminator: no se puede convertir de Integer a String
Aunque definí la clase principal para usar la columna discriminadora de Type Integer, el compilador sigue dando error: Type mismatch: cannot convert from Integer to Stringpara la clase secundaria que usa el valor discriminador de Integer
@Table(name="ITEMS")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="ITEM_CATEGORY",discriminatorType=DiscriminatorType.INTEGER)
public class Item { ....}
@Entity
@DiscriminatorValue(value=ItemCategory.Values.LEARNING_DUTY)
public class LearningDuty extends Item {...}
public static class Values {
public static final Integer LEARNING_DUTY = 3;
}
archivo pom:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring.version>5.0.2.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
Intenté limpiar el proyecto y reconstruirlo, reiniciando el IDE, pero el problema persiste Estoy usando STS 4
Respuestas
Java es un lenguaje de tipo estático. Así que discriminatorType=DiscriminatorType.INTEGERno se puede cambiar el tipo de DiscriminatorValue's value.
Se explica, por ejemplo, aquí :
La
DiscriminatorValueanotación especifica el valor del discriminador para cada clase. Aunque el valor de esta anotación es siempre una cadena, la aplicación analizará de acuerdo con elDiscriminatorColumn'sdiscriminatorTypepropiedad anterior.
Por lo tanto, debe especificar el valor del discriminador de la siguiente manera:
@DiscriminatorValue(value=""+ItemCategory.Values.LEARNING_DUTY)