最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

postgresql - Hibernate error not a managed type in spring boot 3.2 and java 21 - Stack Overflow

programmeradmin2浏览0评论

The error is at the end of this post. I get it for mvn spring-boot:run. The app can connect to postgresql succesfully.

Here my spring boot project, if u need any further info, please let me know:

app:

@SpringBootApplication
@EnableJpaRepositories(basePackages = "hackdays2025.poweroutage.repository")
@ComponentScan(basePackages = "hackdays2025.poweroutage")
@EntityScan("hackdays2025.poweroutage.entity")
public class PowerOutageApplication {

    public static void main(String[] args) {
        SpringApplication.run(PowerOutageApplication.class, args);
    }
}

Entity:

import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@Setter
@Getter
@Entity
@Table(name = "powe_outage")
@NoArgsConstructor
public class Poweroutage {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String location;
    private String status;

    // Getters and Setters
}

repository:

   import hackdays2025.poweroutage.entity.Poweroutage;
    import .springframework.data.jpa.repository.JpaRepository;
    import .springframework.stereotype.Repository;
    
    
    @Repository
    public interface poweroutageRepository extends JpaRepository<Poweroutage, Long> {
    }

pom.xml:

  <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns=".0.0" xmlns:xsi=";
        xsi:schemaLocation=".0.0 .0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.3</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>hackdays2025</groupId>
        <artifactId>power-outage</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>power-outage</name>
        <description>Power Outage</description>
        <url/>
        <licenses>
            <license/>
        </licenses>
        <developers>
            <developer/>
        </developers>
        <scm>
            <connection/>
            <developerConnection/>
            <tag/>
            <url/>
        </scm>
        <properties>
            <java.version>21</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.36</version>
                <scope>provided</scope>
            </dependency>
    
            <dependency>
                <groupId>.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <version>42.7.5</version>
            </dependency>
    
            <dependency>
                <groupId>.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <scope>test</scope>
            </dependency>
    
    
            <dependency>
                <groupId>.openapitools</groupId>
                <artifactId>jackson-databind-nullable</artifactId>
                <version>0.2.1</version>
            </dependency>
    
            <dependency>
                <groupId>.springdoc</groupId>
                <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
                <version>2.4.0</version> <!-- Check for the latest version -->
            </dependency>
    
            <dependency>
                <groupId>.springframework.boot</groupId>
                <artifactId>spring-boot-starter-validation</artifactId>
            </dependency>
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.14.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>
                    </configuration>
                </plugin>
    
                <plugin>
                    <groupId>.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>3.5.2</version>
                </plugin>
    
                <plugin>
                    <groupId>.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                    <mainClass>hackdays2025.poweroutage.PowerOutageApplication</mainClass>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>.openapitools</groupId>
                    <artifactId>openapi-generator-maven-plugin</artifactId>
                    <version>7.8.0</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>generate</goal>
                            </goals>
                            <configuration>
                                <inputSpec>${project.basedir}/src/main/resources/spec/outage-spec.yaml</inputSpec>
                                <generatorName>spring</generatorName>
                                <apiPackage>hackdays2025.poweroutage.apispec.api</apiPackage>
                                <modelPackage>hackdays2025.poweroutage.apispec.model</modelPackage>
                                <output>${project.build.directory}/generated-sources/openapi</output>
                                <configOptions>
                                    <dateLibrary>java21</dateLibrary>
                                    <useJakartaEe>true</useJakartaEe>
                                </configOptions>
                                <additionalProperties>
                                    <skipDefaultApplication>true</skipDefaultApplication>
                                    <skipDefaultModelImports>true</skipDefaultModelImports> <!-- Optional -->
                                    <supportingFiles>false</supportingFiles> <!-- Deaktiviert andere Hilfsdateien -->
                                </additionalProperties>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
    
            <resources>
                <resource>
                    <directory>${project.build.directory}/generated-sources/openapi</directory>
                    <includes>
                        <include>**/*.java</include>
                    </includes>
                </resource>
            </resources>
        </build>
    
    </project>

DataSourceConfig:

@Configuration
@Profile({"!test"}) // Exclude this bean when the "test" profile is active
public class DataSourceConfig {

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:postgresql://localhost:5432/mydatabase")
                .username("user")
                .password("pass")
                .driverClassName(".postgresql.Driver")
                .build();
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
        em.setDataSource(dataSource());
        em.setPackagesToScan("hackdays2025.poweroutage.entity.PowerOutage"); 
        JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        em.setJpaVendorAdapter(vendorAdapter);
        em.setJpaProperties(additionalProperties());
        return em;
    }

    private Properties additionalProperties() {
        Properties properties = new Properties();
        properties.setProperty("hibernate.dialect", ".hibernate.dialect.PostgreSQLDialect");
        properties.setProperty("hibernate.show_sql", "true");
        properties.setProperty("spring.jpa.hibernate.ddl-auto", "update");
        return properties;
    }
}

error:

Caused by: java.lang.IllegalArgumentException: Not a managed type: class hackdays2025.poweroutage.entity.Poweroutage
  at .hibernate.metamodel.model.domain.internal.JpaMetamodelImpl.managedType(JpaMetamodelImpl.java:193)

~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at .hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.managedType(MappingMetamodelImpl.java:468) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at .hibernate.metamodel.model.domain.internal.MappingMetamodelImpl.managedType(MappingMetamodelImpl.java:98) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at .springframework.data.jpa.repository.support.JpaMetamodelEntityInformation.(JpaMetamodelEntityInformation.java:82) ~[spring-data-jpa-3.2.3.jar:3.2.3] at .springframework.data.jpa.repository.support.JpaEntityInformationSupport.getEntityInformation(JpaEntityInformationSupport.java:69) ~[spring-data-jpa-3.2.3.jar:3.2.3]

发布评论

评论列表(0)

  1. 暂无评论