2

我收到此错误: Caused by: org.xml.sax.SAXParseException; lineNumber: 35; columnNumber: 44; Attribute "name" must be declared for element type "mapping". 问题出在这一行,<mapping name="org.one.dto.UserDetails" />原因是它找不到名称属性

下面是我的 hibernate.cfg.xml 文件内容:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <!-- Database connection settings -->
        <property name="connection.driver_class">org.postgresql.Driver</property>
        <property name="connection.url">jdbc:postgresql://localhost:5433/hibernatedb
        </property>
        <property name="connection.username"></property>
        <property name="connection.password">tere123</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.PostgreSQLDialect
        </property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.internal.NoCacheProvider
        </property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <mapping name="org.one.dto.UserDetails" />

        </session-factory>
</hibernate-configuration>

这是我的主要课程:

package org.one;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
import org.one.dto.UserDetails;

public class HibernateTest {
    private static ServiceRegistry serviceRegistry; 
    public static void main(String[] args){

        UserDetails user = new UserDetails();
        user.setId(1);
        user.setUserName("Laura");
        Configuration configuration = new Configuration();
        configuration.configure();
        serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();

        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        session.save(user);
        session.getTransaction().commit();

    }
}

你能说出什么是错的吗?

4

2 回答 2

1

映射标签采用这些属性

<!ELEMENT mapping EMPTY> <!-- reference to a mapping file -->
<!ATTLIST mapping resource CDATA #IMPLIED>
<!ATTLIST mapping file CDATA #IMPLIED>
<!ATTLIST mapping jar CDATA #IMPLIED>
<!ATTLIST mapping package CDATA #IMPLIED>
<!ATTLIST mapping class CDATA #IMPLIED>

它没有列出名称属性。

于 2013-09-24T15:52:51.250 回答
0

如果您使用的是 Hibernate Mapping XML 文件,则必须按如下方式指定它:

<mapping resource="org.one.dto.UserDetails.hbm.xml"/> <!-- or your path to the mapping XML file -->

Hibernate Mapping XML 标记没有“名称”属性。

于 2013-09-24T15:56:54.830 回答