Spring JPA или Hibernate Entity возвращается с нулевыми полями EnumJAVA

Программисты JAVA общаются здесь
Anonymous
Spring JPA или Hibernate Entity возвращается с нулевыми полями Enum

Сообщение Anonymous »

Я работал над весенним проектом и столкнулся с необычной ошибкой. У меня есть класс сущности, определяемый как < /p>

Код: Выделить всё

import jakarta.persistence.*;
import lombok.Data;
// other imports

@Table(
name = "brand"
)
@Entity
@Data
public class Brand {
@Id
@Column(
name = "id"
)
@GeneratedValue(
strategy = GenerationType.UUID
)
String id;
@Enumerated(EnumType.STRING)
ResourceType resourceType;
String name;
String defaultLanguage;
@Enumerated(EnumType.STRING)
ReviewStage reviewStage;

}

public enum ResourceType {
PUBLIC,
MEDIA_OUTLET, // Other Values
}

public enum ReviewStage {
PRE_SUBMIT,
SUBMITTED,
REJECTED,
ACCEPTED,
DECLINED,
CONFIRMED,
CONFIRM_APPEALED;
}
< /code>
Вот мой репозиторий: < /p>
public interface BrandRepo extends JpaRepository
{

@Query(value = "select * from brand i where i.name like CONCAT('%', ?1, '%') " +
"and i.reviewStage = :#{#stage?.name()}", nativeQuery = true)
//@Query("select i from Brand i where i.name like %:name% and i.reviewStage = :stage")
List
getLikeName(String name, ReviewStage stage, Pageable pageable);
}
В моей базе данных у меня есть несколько объектов как с Resourccetype , так и с Crownstage столбцами, установленными для некоторого значения. Но когда я выполняю метод, объект возвращается, но поля являются нулевыми.
Когда я использую неходовой версию запроса в репозитории JPA, объект не возвращается. Boot). < /P>
Другие зависимости градл: < /p>

Код: Выделить всё

    implementation 'org.hibernate:hibernate-core:6.1.6.Final'
implementation 'org.hibernate:hibernate-entitymanager:5.6.14.Final'
implementation 'jakarta.validation:jakarta.validation-api:3.0.2'
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springbootVersion"  // Note, this is 3.5.0
implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0'

implementation 'com.mysql:mysql-connector-j:9.3.0'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:+'
< /code>
Я попытался заменить свои зависимости Hibernate на < /p>
implementation 'org.hibernate.orm:hibernate-core:7.0.3.Final'
Это привело меня к Google (на самом деле) java.lang.classnotfoundexception: org.hibernate.query.bindabletype Так что я вернулся назад. Я еще не решил проблему. Тем не менее, я немного копал, чтобы увидеть, смогу ли я сузить проблему. Я решил создать класс конвертера, и я обновил свой класс объектов следующим образом: < /p>
@Table(
name = "brand"
)
@Entity
@Data
public class Brand {
@Id
@Column(
name = "id"
)
@GeneratedValue(
strategy = GenerationType.UUID
)
String id;
@Enumerated(EnumType.STRING)
ResourceType resourceType;
String name;
String defaultLanguage;
@Convert(converter = ReviewStageConverter.class)
ReviewStage reviewStage;
String brandId;

public void setReviewStage(ReviewStage reviewStage1){
this.reviewStage = reviewStage1;
}

public void setReviewStage(String reviewStage1) {
this.reviewStage = ReviewStage.valueOf(reviewStage1.trim());
}
}
< /code>
Вот результаты запуска конвертера:
< /p>
Я также включил hibernate sql arginging his hiberging hibernate sql, и здесь и hibernate sql, и здесь и hibernate sql и здесь, и здесь и hibernate sql, и hibernate sql и здесь. alt = "Журнал оператора Hibernate SQL, использованный" src = "https://i.sstatic.net/ruco0xck.png"/>
Наконец, потому что я рассматривал возможность, что проблема была в MySQL, я использовал JDBC (или Enum. Применение и вот результаты (реальный класс объектов немного больше, чем было показано ранее):


Подробнее здесь: https://stackoverflow.com/questions/796 ... num-fields

Вернуться в «JAVA»