В Hibernate 6 поле, аннотированное @Column @NotNull Private Set IssueTypeLabels, сопоставленное с столбцом Postgres VARCHAR ARRAY, генерируется:
public static volatile SingularAttribute issueTypeLabels;
В Hibernate 7 без добавления @JdbcTypeCode(SqlTypes.ARRAY) генератор создает необработанный тип:
public static volatile SingularAttribute issueTypeLabels;
Шаги для воспроизведения: поле сущности с @JdbcTypeCode(SqlTypes.ARRAY) и типом Set.
Ожидается: SingularAttribute
Фактическое: SingularAttribute (необработанный тип)
Пример:
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
private UUID id = UUID.randomUUID();
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
}
@Entity
public class TestEntity extends BaseEntity {
@Column
@JdbcTypeCode(SqlTypes.ARRAY)
private Set tags = new HashSet();
@Column
private String name;
public Set getTags() {
return tags;
}
public void setTags(Set tags) {
this.tags = tags;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**
* Static metamodel for {@link com.example.hibernateissue.TestEntity}
**/
@StaticMetamodel(TestEntity.class)
@Generated("org.hibernate.processor.HibernateProcessor")
public abstract class TestEntity_ extends BaseEntity_ {
/**
* @see #tags
**/
public static final String TAGS = "tags";
/**
* @see #name
**/
public static final String NAME = "name";
/**
* Static metamodel type for {@link com.example.hibernateissue.TestEntity}
**/
public static volatile EntityType class_;
/**
* Static metamodel for attribute {@link com.example.hibernateissue.TestEntity#tags}
**/
public static volatile SingularAttribute tags;
/**
* Static metamodel for attribute {@link com.example.hibernateissue.TestEntity#name}
**/
public static volatile SingularAttribute name;
}
plugins {
java
id("org.springframework.boot") version "4.0.6"
id("io.spring.dependency-management") version "1.1.7"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
description = "hibernate-issue"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
runtimeOnly("org.postgresql:postgresql")
annotationProcessor("org.hibernate.orm:hibernate-processor")
testImplementation("org.springframework.boot:spring-boot-starter-data-jpa-test")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
tasks.withType {
useJUnitPlatform()
}