public class Test {
public static void main(String[] args){
Admin user = new Admin() ;
user.setUserName("aaaa");
user.setPassword("11111");
user.setPermission("1");
user.setName("bbbb");
user.setOnline(1);
Configuration cfg = new Configuration();
SessionFactory sf = HibernateUtil.getSessionFactory();
Session session = sf.openSession();
session.beginTransaction();
session.save(user);
session.getTransaction().commit();
session.close();
sf.close();
}
}
为什么生成的SQL语句是
Hibernate: insert into admin (userName) values (?)
而不是
insert into admin (userName,password,permission,name,online) values(?,?,?,?,?)另外查询Load方法也是只查询主键,得不到其他属性的值

解决方案 »

  1.   

    这是配置文件
    其中:实体类中的属性的名字和数据库中的表的属性名字是一样的
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
            "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
            "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="com.information">
    <class name="Admin" table="admin">
    <id name="userName"></id>
    <properties name="password"></properties>
    <properties name="permission"></properties>
    <properties name="name"></properties>
    <properties name="online"></properties>
    </class>
    </hibernate-mapping>
      

  2.   


    1、这个跟你配置的映射关系 有问题 导致的吧hibernate以为你为admin表 只配置了一个关联属性关系 所以这样子了。。2、load()采用的延迟加载,不会把所有属性的值都查询出来,而是你get什么属性就发一条语句去查询。。要直接得到其他属性可以用get()啊
      

  3.   

    <properties name="online"></properties>
    改成
    <property name="online"></property>试试