2015-12-03 1 views
1

Когда я попробовал свою первую спящую программу и получил эту ошибку.Исключение: указание целевой команды обработки [xX] [mM] [lL] "не разрешено

Моя программа просто вставляет empID,first_name,second_name (имена таблиц) и использует базу данных MySQL.

Пробовал много решений порога, получив эту ошибку.

проецируемый файл

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
<session-factory> 
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> 
<property name="hibernate.connection.username">root</property> 
<property name="hibernate.connection.password">anandhu</property> 

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="show_sql">true</property> 
<property name="format_sql">true</property> 
<property name="hbm2ddl.auto">update </property> 
<mapping resource="employee.hbm.xml"/> 
</session-factory> 
</hibernate-configuration> 

файл конфигурации

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 

<hibernate-mapping> 
    <class name="Employee" table="emp"> 
    <id name="empID" column="empID" type="int"> 
    <generator class="assigned"></generator> 
    </id> 

    <property name="firstName" column="first_name" type="string"> 
    <property name="lastName" column="second_name" type="string"> 

    </class> 

</hibernate-mapping> 

Это моя настойчивость класс

public class Employee { 
private int empID; 
private String firstName; 
private String lastName; 
public int getID(){ 
    return empID; 
} 
public void setID(int empID){ 
    this.empID = empID; 
} 
public String getFirstName(){ 
    return firstName; 
} 
public void setFirstName(String firstName){ 
    this.firstName = firstName; 
} 
public String getLastName(){ 
    return lastName; 
} 
public void setLastName(String lastName){ 
    this.lastName = lastName; 
} 


} 

Это мой тестовый класс

import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.classic.Session; 



public class EmployeeTest { 

public static void main(String[] args) { 
    Configuration cf = new Configuration(); 
    cf.configure("employee.cfg.xml"); 
    SessionFactory factory = cf.buildSessionFactory(); 
    Session session = factory.openSession(); 
    Employee employee = new Employee(); 
    employee.setID(30); 
    employee.setFirstName("raju"); 
    employee.setLastName("ryan"); 
    Transaction transaction = session.beginTransaction(); 
    session.save(employee); 
    System.out.println("updated"); 
    transaction.commit(); 
    session.close(); 
    factory.close(); 


} 

} 

трассировки стека

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). 
log4j:WARN Please initialize the log4j system properly. 
Exception in thread "main" org.hibernate.HibernateException: Could not parse configuration: employee.cfg.xml 
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1491) 
      at org.hibernate.cfg.Configuration.configure(Configuration.java:1425) 
      at com.anandhu.hibernateproject.EmployeeTest.main(EmployeeTest.java:16) 
     Caused by: org.dom4j.DocumentException: Error on line 3 of document : 
    The processing instruction target matching "[xX][mM][lL]" is not allowed. 
    Nested exception: 
    The processing instruction target matching "[xX][mM][lL]" is not allowed. 
      at org.dom4j.io.SAXReader.read(SAXReader.java:482) 
      at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1481) 
      ... 2 more 
+1

Вы хотите показать код? – Rufi

+0

, пожалуйста, добавьте свой код, cfg file error log .. – Killer

+0

Пожалуйста, разместите свой код и сообщите нам, что именно вы уже пробовали. – mrun

ответ

2

Проблема с этой линии

<property name="firstName" column="first_name" type="string"> 
<property name="lastName" column="second_name" type="string"> 

Должно быть

<property name="firstName" column="first_name" type="string" /> 
<property name="lastName" column="second_name" type="string" /> 

Было бы проще найти решение, если вы показать все StackTrace.

Примеры работы с конфигурацией и сеансом here.

Upated

проверить это отображение и она отлично работает. Похоже, что вы имеете неправильные символы (могут быть пробелы) в заголовке xml. Может быть, это будет полезно Error: The processing instruction target matching “[xX][mM][lL]” is not allowed.

+0

все еще не работают. – maman

+0

Я добавил трассировку стека, пожалуйста, проверьте. – maman

+0

@maman Я проверил вашу конфигурацию с Hibernate 5.0.3. Он работает нормально. Какую версию Hibernate вы используете? И, пожалуйста, покажите все stacktrace. Почему вы показываете только часть? Я не могу делать прогнозы. –