我收到此错误:
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();
}
}
你能说出什么问题吗?
答案 0 :(得分:1)
Mapping tag采用这些属性
<!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>
没有列出名称属性。
答案 1 :(得分:0)
如果您使用的是Hibernate Mapping XML文件,则必须按如下方式指定:
<mapping resource="org.one.dto.UserDetails.hbm.xml"/> <!-- or your path to the mapping XML file -->
Hibernate Mapping XML标记没有属性“name”。