You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hibernate 5代码配置时实体类未映射,导致插入数据出现嵌入式主键属性找不到报错的问题求助

Hibernate 5代码配置时实体类未映射,导致插入数据出现嵌入式主键属性找不到报错的问题求助

我目前在用Hibernate 5做项目,打算完全用代码来配置它,现在数据库连接已经搞定了,但实体类好像没被正确映射上——现在连数据都插不进数据库,还一直报嵌入式主键里的某个属性找不到的错误,有没有朋友能帮我排查下问题?

我把自己的配置代码贴在下面了:

public void initialize()
{
    configuration = new Configuration();
    setupPostgresDbConnectionProperties();

    while (!initilizeSessionFactory())
    {
        System.err.println("retrying to initilize session factory");
    }
}

public void setupPostgresDbConnectionProperties()
{
    configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.PostgreSQLDialect");
    configuration.setProperty("hibernate.connection.driver_class", "org.postgresql.Driver");
    String dbUrl = String.format("jdbc:postgresql://localhost:%d/%s", appConfig.getDb_port(), appConfig.getDb_schema_name());
    configuration.setProperty("hibernate.connection.url", dbUrl);
    configuration.setProperty("hibernate.connection.username", appConfig.getDb_user_name());
    configuration.setProperty("hibernate.connection.password", appConfig.getDb_pass());
    configuration.setProperty("hibernate.hbm2ddl.auto", "update");
}

private void loadEntitiesClasses(String packageName)
{
    if (packageName == null || packageName.length() == 0)
    {
        packageName = "com.jhonny.SharePointReports";

        Set<Class<?>> entityClasses = EntityScanner.getEntityClasses(packageName);

        for (Class<?> entityClass : entityClasses)
        {
            configuration.addAnnotatedClass(entityClass);
            System.out.println("Registering Entity: " + entityClass.getSimpleName());
        }
    }
}

private boolean initilizeSessionFactory()
{
    try
    {
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder()
                .applySettings(configuration.getProperties())
                .build();

        Set<Class<?>> entityClasses = EntityScanner.getEntityClasses("com.jhonny.SharePointReports");
        MetadataSources metadataSources = new MetadataSources(serviceRegistry);
        for (Class<?> entityClass : entityClasses) {
            metadataSources.addAnnotatedClass(entityClass);
        }

        sessionFactory = metadataSources.buildMetadata().buildSessionFactory();

        System.out.println("Session Factory is initilized successFully");
        return true;
    }
    catch (Exception e)
    {
        System.err.println("error in Session Factory creation.\n error message = " + e.getMessage());
        e.printStackTrace();
    }
    return false;
}

备注:内容来源于stack exchange,提问作者Dood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:07:59