hibernate的一个问题弄了2天了
19:25:52,593 INFO Environment: Hibernate 3.1.3
19:25:52,656 INFO Environment: loaded properties from resource hibernate.properties: {hibernate.connection.driver_class=com.mysql.jdbc.Driver, hibernate.cglib.use_reflection_optimizer=true, hibernate.dialect=org.hibernate.dialect.MySQLDialect, hibernate.jdbc.batch_size=0, hibernate.connection.username=root, hibernate.connection.url=jdbc:mysql://localhost:3306/user, hibernate.show_sql=true, hibernate.connection.password=****, hibernate.connection.pool_size=10}
19:25:52,687 INFO Environment: using CGLIB reflection optimizer
19:25:52,687 INFO Environment: using JDK 1.4 java.sql.Timestamp handling
19:25:53,046 INFO Configuration: configuring from resource: /hibernate.cfg.xml
19:25:53,046 INFO Configuration: Configuration resource: /hibernate.cfg.xml
19:25:53,218 INFO Configuration: Reading mappings from resource: com/iustice/User.hbm.xml
19:25:53,281 ERROR XMLHelper: Error parsing XML: XML InputStream(7) The content of element type "id " must match "(meta*,column*,type?,generator?) ".
19:25:53,296 ERROR XMLHelper: Error parsing XML: XML InputStream(10) The content of element type "class " must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,resultset*,(query|sql-query)*) ".
19:25:53,359 ERROR HibernateUtil: Initial SessionFactory creation failed.
org.hibernate.MappingException: Could not read mappings from resource: com/iustice/User.hbm.xml
StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.ExceptionInInitializerError
java.lang.ExceptionInInitializerError
at com.HibernateUtil. <clinit> (HibernateUtil.java:16)
at com.iustice.user.LoginAction.execute(LoginAction.java:26)
Caused by: org.hibernate.MappingException: Could not read mappings from resource: com/iustice/User.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:485)
Caused by: org.xml.sax.SAXParseException: The content of element type "id " must match "(meta*,column*,type?,generator?) ".
这些是提示
<?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 package= "com.iustice ">
<class name= "User " table= "user ">
<id name= "id " column= "Id " type= "int " >
<generator class= "increment "> </generator>
</id>
<property name= "username " column= "username " unique= "true "/>
<property name= "password " column= "password " />
</class>
</hibernate-mapping>
这些是 *.hbm.xml
<?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 ">
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<property name= "connection.url "> jdbc:mysql://localhost/user </property>
<property name= "connection.driver_class "> org.gjt.mm.mysql.Driver </property>
<property name= "connection.username "> root </property>
<property name= "connection.password "> 002312708 </property>
<property name= "dialect "> org.hibernate.dialect.MySQLDialect </property>
<property name= "connection.pool_size "> 10 </property>
<property name= "current_session_context_class "> thread </property>
<property name= "cache.provider_class "> org.hibernate.cache.NoCacheProvider </property>
<property name= "show_sql "> true </property>
<!--
<property name= "hbm2ddl.auto "> create </property>
-->
<mapping resource= "com/iustice/User.hbm.xml " />
</session-factory>
</hibernate-configuration>
这些是*cfg.xml
-- Table: user
-- DROP TABLE `user`;
CREATE TABLE `user` (
`Id` int NOT NULL,
`username` varchar(20) CHARACTER SET `gbk` COLLATE `gbk_bin` NOT NULL,
`password` varchar(40) CHARACTER SET `gbk` COLLATE `gbk_bin` NOT NULL,
/* Keys */
PRIMARY KEY (`Id`)
) ENGINE = MyISAM
PACK_KEYS = 1
DELAY_KEY_WRITE = 1
CHARACTER SET `utf8` COLLATE `utf8_general_ci`;
这些是SQL语句
package com.iustice;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
public class User implements Serializable {
private int id;
private String username;
private String password;
public User(){}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public long getId(){
return id;
}
public void setId(int id){
this.id=id;
}
}
这些是实体类
package com.iustice.user;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import javax.servlet.http.HttpServletRequest;
public class Login extends ActionForm {
private String password;
private String username;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsername() {
return username;
}
public ActionErrors validate(ActionMapping actionMapping,
HttpServletRequest httpServletRequest) {
/** @todo: finish this method, this is just the skeleton.*/
return null;
}
public void reset(ActionMapping actionMapping,
HttpServletRequest servletRequest) {
}
}
package com.iustice.user;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.Query;
import org.hibernate.Session;
import com.DatabaseGenerate;
import com.HibernateUtil;
import java.lang.reflect.InvocationTargetException;
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws
NoSuchMethodException, InvocationTargetException,
IllegalAccessException {
String username=(String)PropertyUtils.getSimpleProperty(form, "username ");
String password=(String)PropertyUtils.getSimpleProperty(form, "password ");
Session s=HibernateUtil.currentionSession();
Query q=s.createQuery( "from User u where u.username= ' "+username+ " ' and password= ' "+password+ " ' ");
if(q.list().isEmpty()){
HibernateUtil.closeSession();
return(mapping.findForward( "loginfail "));
}
else{
HibernateUtil.closeSession();
request.getSession().setAttribute(username,username);
return mapping.findForward( "loginsuccess ");
}
}
}
这些是代码
请大家给看一看吧
我实在是弄捕处来了~~~~
[解决办法]
*.hbm.xml中class name要写完整的包名
既然是mappingexpection那么你应该要想到是映射文件没配制好
[解决办法]
你自己试验一下 用eclipse工具装上middlegen插件 在数据库里建立一张表,使用middlegen自动创建所有的东西(配置文件和javabean),估计不会有错了,按照这个过程来试一次吧
[解决办法]
帮你顶,不过觉得可能是你程序写的有问题,貌似不是配置文件的问题.
[解决办法]
应该是你的配置文件的问题,因为已经提示你XML读的时候有错误了
[解决办法]
<id name= "id " column= "Id " type= "int " >
<generator class= "increment "> </generator>
</id>
以上错
---------------------------------------------
Caused by: org.xml.sax.SAXParseException: The content of element type "id " must match "(meta*,column*,type?,generator?) ".
----------------------------------------------
<id name= "id " type= "int ">
<column name= "id "/>
<generator class= "increment "/>
</id>