说明:我到网上找了一下此问题的一些看法,说的是映射文件有问题。在此我帖完整:
LoginAction.java:
                  public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
LoginForm loginForm = (LoginForm) form;
//下面是获取login.jsp页面来的“用户名”,“密码”
String userName = request.getParameter("userName");
String userPassword = request.getParameter("userPassword");
//创建用户表对象
ZMessageUserDAO zmudao = null;
String hsql = "SELECT USERNAME FROM Z_MESSAGE_USER WHERE USERNAME = '"+ userName +"'";
Session session = HibernateSessionFactory.currentSession();
session.beginTransaction();
Query query = session.createQuery(hsql);
//把查询的存到list中
List nameList = query.list();
//关闭连接
HibernateSessionFactory hsf = null;
zmudao.closeSession(session);
//取出list中的值进行比较
ZMessageUser zmu = null;
Iterator it = nameList.listIterator();
zmu = (ZMessageUser) it.next();
if(userName == zmu.getUsername())
{
if(userPassword == zmu.getUserpassword())
{
return (mapping.findForward("seccess"));
}
else
{
return (mapping.findForward("fault"));
}
}
else
{
return (mapping.findForward("fail"));

}
}
ZMessageUser.Hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse - Hibernate Tools
-->
<hibernate-mapping>
    <class name="com.message.ZMessageUser" table="Z_MESSAGE_USER" schema="system">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="9" scale="0" />
            <generator class="sequence" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="USERNAME" length="30" />
        </property>
        <property name="userpassword" type="java.lang.String">
            <column name="USERPASSWORD" length="30" />
        </property>
        <property name="useremail" type="java.lang.String">
            <column name="USEREMAIL" length="20" />
        </property>
        <property name="userrecord" type="java.lang.String">
            <column name="USERRECORD" length="8" />
        </property>
        <property name="usertelephone" type="java.lang.Long">
            <column name="USERTELEPHONE" precision="13" scale="0" />
        </property>
        <set name="ZMessageMes" inverse="true">
            <key>
                <column name="USERID" precision="9" scale="0" not-null="true" />
            </key>
            <one-to-many class="com.message.ZMessageMe" />
        </set>
    </class>
</hibernate-mapping><?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.fcg.xml:
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration> <session-factory>
<property name="connection.username">System</property>
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:admin06</property>
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="connection.password">sql</property>
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="myeclipse.connection.profile">message_oracle</property>
<mapping resource="com/message/ZMessageUser.hbm.xml" />
<mapping resource="com/message/ZMessageMe.hbm.xml" /> </session-factory></hibernate-configuration>

解决方案 »

  1.   

    Could not read mappings from resource: com/message/ZMessageUser.hbm.xml!
      

  2.   

    用java开发的软件能生成exe文件在windows下运行么?我是新手,所以要问这个问题.我看了很多书上都没这样的说明.
      

  3.   

    if(userName == zmu.getUsername())
    {
    if(userPassword == zmu.getUserpassword())
    {
    字符串比较用什么?先改基本的吧
      

  4.   

    对照ZMessageUser.hbm.xml、ZMessageUser.java和Z_MESSAGE_USER表的字段,应该是字段类型有不匹配的。
      

  5.   

    哦"skyfen()"兄你说的字符串比较非得用equals()吗,不会吧,以前别人就问过我这个问题:==和equals()的区别
    == 是有一个缓冲池   谢谢
    “anchor1”兄你说的没匹配我倒要好好检查下,谢谢
      

  6.   

    <set name="ZMessageMes" inverse="true">
    <key>
    <column name="USERID" precision="9" scale="0" not-null="true" />
    </key>
    <one-to-many class="com.message.ZMessageMe" />
    </set>
    Caused by: org.hibernate.DuplicateMappingException: Duplicate collection role mapping com.message.ZMessageUser.ZMessageMes
    ZMessageMes 是大小写问题吗?
      

  7.   

    “老蒋”兄说得非常正确。但是我又碰到了一问题:%%%% Error Creating SessionFactory %%%%
    org.hibernate.PropertyNotFoundException: Could not find a getter for zmessageuser in class com.message.ZMessageMe
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:213)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:207)
    at org.hibernate.mapping.Property.getGetter(Property.java:240)
    at org.hibernate.tuple.PojoTuplizer.buildPropertyGetter(PojoTuplizer.java:237)
    at org.hibernate.tuple.AbstractTuplizer.<init>(AbstractTuplizer.java:73)
    at org.hibernate.tuple.PojoTuplizer.<init>(PojoTuplizer.java:54)
    at org.hibernate.tuple.TuplizerLookup.create(TuplizerLookup.java:47)
    at org.hibernate.tuple.EntityMetamodel.<init>(EntityMetamodel.java:218)
    at org.hibernate.persister.entity.BasicEntityPersister.<init>(BasicEntityPersister.java:400)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:104)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:211)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1005)
    我是才学hibernate,我知道什么都拿出来问不好,所以我从现在起要好好看一下hibernate的结构,不过当然希望各位耐心教导一下,谢谢!
      

  8.   

    我想是不是在Z_Message_Me数据库表里面必须要与Z_Message_User表相对应的值?因为我现在是只有一个表里面有值
      

  9.   

    package com.message;/**
     * AbstractZMessageMe generated by MyEclipse - Hibernate Tools
     */public abstract class AbstractZMessageMe  implements java.io.Serializable {
        // Fields         private Long mid;
         private ZMessageUser ZMessageUser;
         private String mtitle;
         private String mcontent;
        // Constructors    /** default constructor */
        public AbstractZMessageMe() {
        } /** minimal constructor */
        public AbstractZMessageMe(ZMessageUser ZMessageUser) {
            this.ZMessageUser = ZMessageUser;
        }
        
        /** full constructor */
        public AbstractZMessageMe(ZMessageUser ZMessageUser, String mtitle, String mcontent) {
            this.ZMessageUser = ZMessageUser;
            this.mtitle = mtitle;
            this.mcontent = mcontent;
        }   
        // Property accessors    public Long getMid() {
            return this.mid;
        }
        
        public void setMid(Long mid) {
            this.mid = mid;
        }    public ZMessageUser getZMessageUser() {
            return this.ZMessageUser;
        }
        
        public void setZMessageUser(ZMessageUser zmessageuser) {
            this.ZMessageUser = zmessageuser;
        }    public String getMtitle() {
            return this.mtitle;
        }
        
        public void setMtitle(String mtitle) {
            this.mtitle = mtitle;
        }    public String getMcontent() {
            return this.mcontent;
        }
        
        public void setMcontent(String mcontent) {
            this.mcontent = mcontent;
        }
       
    }
    package com.message;import java.util.HashSet;
    import java.util.Set;
    /**
     * AbstractZMessageUser generated by MyEclipse - Hibernate Tools
     */public abstract class AbstractZMessageUser  implements java.io.Serializable {
        // Fields         private Long id;
         private String username;
         private String userpassword;
         private String useremail;
         private String userrecord;
         private Long usertelephone;
         private Set ZMessageMes = new HashSet(0);
        // Constructors    /** default constructor */
        public AbstractZMessageUser() {
        }    
        /** full constructor */
        public AbstractZMessageUser(String username, String userpassword, String useremail, String userrecord, Long usertelephone, Set ZMessageMes) {
            this.username = username;
            this.userpassword = userpassword;
            this.useremail = useremail;
            this.userrecord = userrecord;
            this.usertelephone = usertelephone;
            this.ZMessageMes = ZMessageMes;
        }   
        // Property accessors    public Long getId() {
            return this.id;
        }
        
        public void setId(Long id) {
            this.id = id;
        }    public String getUsername() {
            return this.username;
        }
        
        public void setUsername(String username) {
            this.username = username;
        }    public String getUserpassword() {
            return this.userpassword;
        }
        
        public void setUserpassword(String userpassword) {
            this.userpassword = userpassword;
        }    public String getUseremail() {
            return this.useremail;
        }
        
        public void setUseremail(String useremail) {
            this.useremail = useremail;
        }    public String getUserrecord() {
            return this.userrecord;
        }
        
        public void setUserrecord(String userrecord) {
            this.userrecord = userrecord;
        }    public Long getUsertelephone() {
            return this.usertelephone;
        }
        
        public void setUsertelephone(Long usertelephone) {
            this.usertelephone = usertelephone;
        }    public Set getZMessageMes() {
            return this.ZMessageMes;
        }
        
        public void setZMessageMes(Set zmessagemes) {
            this.ZMessageMes = zmessagemes;
        }
    }
      

  10.   

    Could not find a getter for zmessageuser in class com.message.ZMessageMe问题很明显,看一下你的ZMessageMe.hbm.xml和ZMessageMe类是不是zmessageuser 该属性在类ZMessageMe里面没有get和set方法,可能又是大小写问题!我晕!好好检查xml和类的映射。
      

  11.   

    实际上这个是hibernate的一个反射调用策略问题,在你的类com.message.ZMessageMe 中有一个属性叫ZMessageMes,而hibernate回根据javabean规范去利用反射去寻找一个叫setZmessageMes()的方法,请注意:Z后面的m是小写的,而你在类文件里的方法是setZMessageMes();所以提示找不到该方法。解决此类问题可以在给变量命名的时候避免两个大写字母连用的情况。比如说你给变量命名为age,set方法叫setAge()就肯定没错。如果你对这个问题感兴趣,可以参考hibernate源代码。