先上代码 package com.test.hibernate;import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class Start { public static void main(String[] args) {
Configuration cfg = new Configuration().configure();

SessionFactory factory = cfg.buildSessionFactory();

Session session =null ;

try{
session = factory.openSession();

session.beginTransaction();


Test test = new Test();

test.setName("����张三");
test.setPassword("123456");
test.setStsdate(new Date());
test.setEnddate(new Date());
test.setId(1);

session.save(test);

session.getTransaction().commit();
}catch(Exception e){

e.printStackTrace();
System.out.println("�抛出异常");
session.getTransaction().rollback();
}finally{
if(session != null)
{
if(session.isOpen())
{
session.close();
}
}
}
}
}package com.test.hibernate;import java.util.Date;public class Test { private String name;
private String password;
private Date stsdate;
private Date enddate;
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getEnddate() {
return enddate;
}
public void setEnddate(Date enddate) {
this.enddate = enddate;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Date getStsdate() {
return stsdate;
}
public void setStsdate(Date stsdate) {
this.stsdate = stsdate;
}


}配置文件 
<?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="com.test.hibernate.Test">
          <id name="id" column="id">
         <generator class="uuid"/>
                   </id>
         <property name="id" column="int"/>
        <property name="name" column="name"/>
          <property name="password" column="password"/>
         <property name="stsdate" column="stsdate" />
          <property  name="enddate" column="enddate"/>
          
          </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"><!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>    <session-factory>
        <property name="connection.username">ajax</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:TEST</property>
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
        <property name="myeclipse.connection.profile">Oracle</property>
        <property name="connection.password">123456</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <mapping resource="com/test/hibernate/Test.hbm.xml"/>
    </session-factory></hibernate-configuration>下面是错误信息 
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.test.hibernate.Test.id
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
at org.hibernate.tuple.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:204)
at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3262)
at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:157)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:114)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
at com.test.hibernate.Start.main(Start.java:31)
Caused by: java.lang.IllegalArgumentException: argument type mismatch
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
... 13 more
?抛出异常 又是代码又是错误信息的有点长 希望各位别嫌麻烦 还望多多赐教 因为是新手所以好多概念理解不扎实不透彻 希望各位多讲解一些说的简单一些大量分奉上

解决方案 »

  1.   

    你的hibernate文件2个id必然冲突,把下面的那个id修改成其他的,就应该ok了
      

  2.   

    <id name="id" column="id">
             <generator class="uuid"/></id>
             <property name="id" column="int"/>错了。
      

  3.   

    先谢谢楼上几位 我改了一下 <hibernate-mapping >
              <class name="com.test.hibernate.Test">
              <id name="id" column="id">
             <generator class="uuid"/>
                       </id>
            <property name="name" column="name"/>
              <property name="password" column="password"/>
             <property name="stsdate" column="stsdate" />
              <property  name="enddate" column="enddate"/>
              
              </class>
    只留下一个id 结果还是报错 
    下面是错误信息
    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
    log4j:WARN Please initialize the log4j system properly.
    org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.test.hibernate.Test.id
    at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
    at org.hibernate.tuple.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:204)
    at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3262)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:157)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:114)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
    at com.test.hibernate.Start.main(Start.java:31)
    Caused by: java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
    ... 13 more
    ?抛出异常
      

  4.   

    private int id;改成private String id;因为uuid是一个128-bit的字符串。
      

  5.   

    +1
    Caused by: java.lang.IllegalArgumentException: argument type mismatch报的错是类型不匹配
      

  6.   

    private String id;

    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    test.setId("111");配置文件应该不需要改吧
      

  7.   

    org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.test.hibernate.Test.id
      这到底是个什么错误呢  现在不论怎么修改都是报这个错误 就是6楼那个错误
      

  8.   

    改后要重启一下tomcat哦。配置文件改成你6楼的就可以了。应该不会还出现setter错误的。那个,你数据库的id是varchar的吧?
      

  9.   

    你的测试代码里面test.setId(1);估计和你后面的配置不一致,错误的原因是
    argument type mismatch
    类型不匹配
      

  10.   

    uuid是自动生成主键的吧  Test test = new Test();
                
                test.setName("����张三");
                test.setPassword("123456");
                test.setStsdate(new Date());
                test.setEnddate(new Date());
                test.setId(1);
    把test.setId(1)这句删掉
      

  11.   

    我再传一下现在的代码
    package com.test.hibernate;import java.util.Date;public class Test { private String name;
    private String password;
    private Date stsdate;
    private Date enddate;
    // private String id;
    //
    // public String getId() {
    // return id;
    // }
    // public void setId(String id) {
    // this.id = id;
    // }
    public Date getEnddate() {
    return enddate;
    }
    public void setEnddate(Date enddate) {
    this.enddate = enddate;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
    public String getPassword() {
    return password;
    }
    public void setPassword(String password) {
    this.password = password;
    }
    public Date getStsdate() {
    return stsdate;
    }
    public void setStsdate(Date stsdate) {
    this.stsdate = stsdate;
    }


    }
    package com.test.hibernate;import java.util.Date;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;public class Start { public static void main(String[] args) {
    Configuration cfg = new Configuration().configure();

    SessionFactory factory = cfg.buildSessionFactory();

    Session session =null ;

    try{
    session = factory.openSession();

    session.beginTransaction();


    Test test = new Test();

    test.setName("����张三");
    test.setPassword("123456");
    test.setStsdate(new Date());
    test.setEnddate(new Date());
    //test.setId("111");

    session.save(test);

    session.getTransaction().commit();
    }catch(Exception e){

    e.printStackTrace();
    System.out.println("�抛出异常");
    session.getTransaction().rollback();
    }finally{
    if(session != null)
    {
    if(session.isOpen())
    {
    session.close();
    }
    }
    }
    }
    }配置文件
    <?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="com.test.hibernate.Test">
              <id name="id" column="id">
             <generator class="uuid"/>
                       </id>
            
            <property name="name" column="name"/>
              <property name="password" column="password"/>
             <property name="stsdate" column="stsdate" />
              <property  name="enddate" column="enddate"/>
              
              </class>
        </hibernate-mapping>
    现在还是报错  错误信息 
    log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
    log4j:WARN Please initialize the log4j system properly.
    org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.test.hibernate.Test.id
    at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:104)
    at org.hibernate.tuple.AbstractEntityTuplizer.setIdentifier(AbstractEntityTuplizer.java:204)
    at org.hibernate.persister.entity.AbstractEntityPersister.setIdentifier(AbstractEntityPersister.java:3262)
    at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:157)
    at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:114)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
    at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
    at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
    at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
    at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
    at org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
    at com.test.hibernate.Start.main(Start.java:31)
    Caused by: java.lang.IllegalArgumentException: argument type mismatch
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:42)
    ... 13 more
    ?抛出异常
    我实在是没辙了
      

  12.   

    不知道LZ是怎么弄的,我按照楼主的代码,自己也做了一份,不过我的那个是MySQL的数据库,其余都是按照楼主的代码去写的,就像楼上各位所说的,那个Id生成确实遇到问题,我直接把那个配置文件里面的改成了 <id name="id"><generator class="native"></generator></id>。然后在hibernate.cfg.xml
    中添加了一个property,<property name="hbm2ddl.auto">update</property>运行结果是正确的
    Hibernate: 
        insert 
        into
            Test
            (name, password, stsdate, enddate) 
        values
            (?, ?, ?, ?)
      

  13.   

     那我上面的代码为什么就不行呢 到底是什么原因啊
     额...  我被hibernate拒之门外了
      

  14.   

    org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.test.hibernate.Test.idcom.test.hibernate.Test.setId()//参数的类型是不是不对啊 ?
      

  15.   

    楼主不要乱改啊,你那个id就是int类型的,不要删掉。在test.hrm.xml中那个id类型改成我那样的 试试,native的
      

  16.   

    你再看下数据库里id是verchar 还是number
      

  17.   

    问题解决了 虽然我还是不知道是什么原因 应该是 jar包冲突或者版本的原因吧 马上结贴