Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么会出现此错误java.lang.IllegalArgumentException:对象不是声明类的实例,代码中显示了这一点_Java_Hibernate - Fatal编程技术网

为什么会出现此错误java.lang.IllegalArgumentException:对象不是声明类的实例,代码中显示了这一点

为什么会出现此错误java.lang.IllegalArgumentException:对象不是声明类的实例,代码中显示了这一点,java,hibernate,Java,Hibernate,问题: Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of str.Parent.subjectId; nested exception is org.hibernate.PropertyAccessException: IllegalArgument

问题:

Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of str.Parent.subjectId; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
at dao.EmployeeDao.saveEmployee(EmployeeDao.java:23)
at str.A.abc(A.java:26)
at str.OurLogic.main(OurLogic.java:56)
Caused by: org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:227)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3850)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3558)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)
at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:120)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
... 5 more
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
... 23 more
给出问题陈述

1) 定义一个实体教师。一个教师可以教很多科目

2) 主题有另一个主题作为父主题

3) 教师使用复合键(名称、主题)

解决方案:

Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of str.Parent.subjectId; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
at dao.EmployeeDao.saveEmployee(EmployeeDao.java:23)
at str.A.abc(A.java:26)
at str.OurLogic.main(OurLogic.java:56)
Caused by: org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:227)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3850)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3558)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)
at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:120)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
... 5 more
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
... 23 more
我已经实现了以上几点,我正在努力保存细节 在数据库中使用HibernateTemplate的教师类对象以及父类对象。 但是,我无法保存父类对象。 原因: 因为下面显示的错误


错误:

Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: IllegalArgumentException occurred calling getter of str.Parent.subjectId; nested exception is org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:690)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:411)
at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
at org.springframework.orm.hibernate3.HibernateTemplate.save(HibernateTemplate.java:683)
at dao.EmployeeDao.saveEmployee(EmployeeDao.java:23)
at str.A.abc(A.java:26)
at str.OurLogic.main(OurLogic.java:56)
Caused by: org.hibernate.PropertyAccessException: IllegalArgumentException occurred calling getter of str.Parent.subjectId
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:198)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:227)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3850)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3558)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:203)
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:242)
at org.hibernate.id.ForeignGenerator.generate(ForeignGenerator.java:120)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:713)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:686)
at org.springframework.orm.hibernate3.HibernateTemplate$12.doInHibernate(HibernateTemplate.java:1)
at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
... 5 more
Caused by: java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.hibernate.property.BasicPropertyAccessor$BasicGetter.get(BasicPropertyAccessor.java:172)
... 23 more

代码 OurLogic.java

Below is my code:
package str;
public class OurLogic {

public static void main(String args[])
{
Teacher t =new Teacher();
t.setTeacherId(101);
t.setTeacherName("Jalaj");

//creating 3 child objects
Subject s1=new Subject();

s1.setSubjectId(504);
s1.setSubjectName("JSE");

Subject s2=new Subject();

s2.setSubjectId(505);
s2.setSubjectName("JEE");

Subject s3=new Subject();

s3.setSubjectId(506);
s3.setSubjectName("Spring");
Parent p=new Parent();
p.setParentSubjectName("Java"); 
p.setS(s1);
// adding child objects to set, as we taken 3rd property set in parent
Set s=new HashSet();

s.add(s1);
s.add(s2);
s.add(s3);

t.setSubjects(s);

String subjectName="JEE";//Given a subjectN
A.abc(t,p,subjectName,s);
}
package str;
public class A {  
public static void abc(Teacher t,Parent p,String s1,Set s) {  
ApplicationContext bfact=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)bfact.getBean("d");  
      
    
//For insert
dao.saveEmployee(t);  
dao.saveEmployee(p);
}
public class Parent { 
private int subjectId;
private String parentSubjectName;
private Subject s;
public Subject getS() {
    return s;
}
public void setS(Subject s) {
    this.s = s;
}
public int getSubjectId() {
    return subjectId;
}
public void setSubjectId(int subjectId) {
    this.subjectId = subjectId;
}
public String getParentSubjectName() {
    return parentSubjectName;
}
public void setParentSubjectName(String parentSubjectName) {
    this.parentSubjectName = parentSubjectName;
}   
}
public class Subject implements Serializable{
private int subjectId;
private String subjectName;
private int forevenId;
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getForevenId() {
return forevenId;
}
public void setForevenId(int forevenId) {
this.forevenId = forevenId;
}
}

A.java

Below is my code:
package str;
public class OurLogic {

public static void main(String args[])
{
Teacher t =new Teacher();
t.setTeacherId(101);
t.setTeacherName("Jalaj");

//creating 3 child objects
Subject s1=new Subject();

s1.setSubjectId(504);
s1.setSubjectName("JSE");

Subject s2=new Subject();

s2.setSubjectId(505);
s2.setSubjectName("JEE");

Subject s3=new Subject();

s3.setSubjectId(506);
s3.setSubjectName("Spring");
Parent p=new Parent();
p.setParentSubjectName("Java"); 
p.setS(s1);
// adding child objects to set, as we taken 3rd property set in parent
Set s=new HashSet();

s.add(s1);
s.add(s2);
s.add(s3);

t.setSubjects(s);

String subjectName="JEE";//Given a subjectN
A.abc(t,p,subjectName,s);
}
package str;
public class A {  
public static void abc(Teacher t,Parent p,String s1,Set s) {  
ApplicationContext bfact=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)bfact.getBean("d");  
      
    
//For insert
dao.saveEmployee(t);  
dao.saveEmployee(p);
}
public class Parent { 
private int subjectId;
private String parentSubjectName;
private Subject s;
public Subject getS() {
    return s;
}
public void setS(Subject s) {
    this.s = s;
}
public int getSubjectId() {
    return subjectId;
}
public void setSubjectId(int subjectId) {
    this.subjectId = subjectId;
}
public String getParentSubjectName() {
    return parentSubjectName;
}
public void setParentSubjectName(String parentSubjectName) {
    this.parentSubjectName = parentSubjectName;
}   
}
public class Subject implements Serializable{
private int subjectId;
private String subjectName;
private int forevenId;
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getForevenId() {
return forevenId;
}
public void setForevenId(int forevenId) {
this.forevenId = forevenId;
}
}

员工指南

package dao;
public class EmployeeDao {  
HibernateTemplate template;  
public void setTemplate(HibernateTemplate template) {  
this.template = template;  
}  
//method to save employee  
public void saveEmployee(Teacher t){  
template.save(t);  
}  
public void saveEmployee(Parent p){  
template.save(p);  
} 

Parent.java

Below is my code:
package str;
public class OurLogic {

public static void main(String args[])
{
Teacher t =new Teacher();
t.setTeacherId(101);
t.setTeacherName("Jalaj");

//creating 3 child objects
Subject s1=new Subject();

s1.setSubjectId(504);
s1.setSubjectName("JSE");

Subject s2=new Subject();

s2.setSubjectId(505);
s2.setSubjectName("JEE");

Subject s3=new Subject();

s3.setSubjectId(506);
s3.setSubjectName("Spring");
Parent p=new Parent();
p.setParentSubjectName("Java"); 
p.setS(s1);
// adding child objects to set, as we taken 3rd property set in parent
Set s=new HashSet();

s.add(s1);
s.add(s2);
s.add(s3);

t.setSubjects(s);

String subjectName="JEE";//Given a subjectN
A.abc(t,p,subjectName,s);
}
package str;
public class A {  
public static void abc(Teacher t,Parent p,String s1,Set s) {  
ApplicationContext bfact=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)bfact.getBean("d");  
      
    
//For insert
dao.saveEmployee(t);  
dao.saveEmployee(p);
}
public class Parent { 
private int subjectId;
private String parentSubjectName;
private Subject s;
public Subject getS() {
    return s;
}
public void setS(Subject s) {
    this.s = s;
}
public int getSubjectId() {
    return subjectId;
}
public void setSubjectId(int subjectId) {
    this.subjectId = subjectId;
}
public String getParentSubjectName() {
    return parentSubjectName;
}
public void setParentSubjectName(String parentSubjectName) {
    this.parentSubjectName = parentSubjectName;
}   
}
public class Subject implements Serializable{
private int subjectId;
private String subjectName;
private int forevenId;
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getForevenId() {
return forevenId;
}
public void setForevenId(int forevenId) {
this.forevenId = forevenId;
}
}

Subject.java

Below is my code:
package str;
public class OurLogic {

public static void main(String args[])
{
Teacher t =new Teacher();
t.setTeacherId(101);
t.setTeacherName("Jalaj");

//creating 3 child objects
Subject s1=new Subject();

s1.setSubjectId(504);
s1.setSubjectName("JSE");

Subject s2=new Subject();

s2.setSubjectId(505);
s2.setSubjectName("JEE");

Subject s3=new Subject();

s3.setSubjectId(506);
s3.setSubjectName("Spring");
Parent p=new Parent();
p.setParentSubjectName("Java"); 
p.setS(s1);
// adding child objects to set, as we taken 3rd property set in parent
Set s=new HashSet();

s.add(s1);
s.add(s2);
s.add(s3);

t.setSubjects(s);

String subjectName="JEE";//Given a subjectN
A.abc(t,p,subjectName,s);
}
package str;
public class A {  
public static void abc(Teacher t,Parent p,String s1,Set s) {  
ApplicationContext bfact=new ClassPathXmlApplicationContext("applicationContext.xml");
EmployeeDao dao=(EmployeeDao)bfact.getBean("d");  
      
    
//For insert
dao.saveEmployee(t);  
dao.saveEmployee(p);
}
public class Parent { 
private int subjectId;
private String parentSubjectName;
private Subject s;
public Subject getS() {
    return s;
}
public void setS(Subject s) {
    this.s = s;
}
public int getSubjectId() {
    return subjectId;
}
public void setSubjectId(int subjectId) {
    this.subjectId = subjectId;
}
public String getParentSubjectName() {
    return parentSubjectName;
}
public void setParentSubjectName(String parentSubjectName) {
    this.parentSubjectName = parentSubjectName;
}   
}
public class Subject implements Serializable{
private int subjectId;
private String subjectName;
private int forevenId;
public int getSubjectId() {
return subjectId;
}
public void setSubjectId(int subjectId) {
this.subjectId = subjectId;
}
public String getSubjectName() {
return subjectName;
}
public void setSubjectName(String subjectName) {
this.subjectName = subjectName;
}
public int getForevenId() {
return forevenId;
}
public void setForevenId(int forevenId) {
this.forevenId = forevenId;
}
}

Teacher.java
applicationContext.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
<property name="driverClassName"  value="com.mysql.jdbc.Driver">  </property>  
<property name="url" value="jdbc:mysql://localhost:3306/JalajSchema"> </property>  
<property name="username" value="root"></property>  
<property name="password" value=""></property>  
</bean>     
<bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
<property name="dataSource" ref="dataSource"></property>          
<property name="mappingResources">  
<list>  
<value>Teacher.hbm.xml</value>           
<value>Subject.hbm.xml</value>   
<value>Parent.hbm.xml</value>  
</list>  
</property>            
<property name="hibernateProperties">  
<props>                <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
<prop key="hibernate.hbm2ddl.auto">create</prop>  
<prop key="hibernate.show_sql">true</prop>          
</props>  
</property>  
</bean>      
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">  
<property name="sessionFactory" ref="mysessionFactory"></property>  
</bean>       
<bean id="d" class="dao.EmployeeDao">  
<property name="template" ref="template"></property>  
</bean>       
</beans>  
<hibernate-mapping>
<class name="str.Subject" table="subject"> 
<id name="subjectId" column="subjid"  />
<property name="subjectName" column="subjname" length="10"/>
<property name="forevenId" column="forevenid"  insert="false" />
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Teacher" table="Teacher1">
<id name="teacherId" column="teachid"  /> 
<property name="teacherName" column="tname" length="10"/>
<set name="subjects" cascade="all" >
<key column="forevenid" />
<one-to-many class="str.Subject" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Parent" table="Parent">
<id name="subjectId" column="subjectId" >
<generator class="foreign">  
<param name="property">s</param>
</generator>  
</id>  
<property name="parentSubjectName" column="parentSubjectName" length="10"/>
<one-to-one name="s" class="str.Parent" cascade="all" />
</class>
</hibernate-mapping>

Teacher.hbm.xml
Subject.hbm.xml
Parent.hbm.xml
org.hibernate.dialogue.mysqldialogue
创造
真的

Subject.hbm.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
<property name="driverClassName"  value="com.mysql.jdbc.Driver">  </property>  
<property name="url" value="jdbc:mysql://localhost:3306/JalajSchema"> </property>  
<property name="username" value="root"></property>  
<property name="password" value=""></property>  
</bean>     
<bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
<property name="dataSource" ref="dataSource"></property>          
<property name="mappingResources">  
<list>  
<value>Teacher.hbm.xml</value>           
<value>Subject.hbm.xml</value>   
<value>Parent.hbm.xml</value>  
</list>  
</property>            
<property name="hibernateProperties">  
<props>                <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
<prop key="hibernate.hbm2ddl.auto">create</prop>  
<prop key="hibernate.show_sql">true</prop>          
</props>  
</property>  
</bean>      
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">  
<property name="sessionFactory" ref="mysessionFactory"></property>  
</bean>       
<bean id="d" class="dao.EmployeeDao">  
<property name="template" ref="template"></property>  
</bean>       
</beans>  
<hibernate-mapping>
<class name="str.Subject" table="subject"> 
<id name="subjectId" column="subjid"  />
<property name="subjectName" column="subjname" length="10"/>
<property name="forevenId" column="forevenid"  insert="false" />
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Teacher" table="Teacher1">
<id name="teacherId" column="teachid"  /> 
<property name="teacherName" column="tname" length="10"/>
<set name="subjects" cascade="all" >
<key column="forevenid" />
<one-to-many class="str.Subject" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Parent" table="Parent">
<id name="subjectId" column="subjectId" >
<generator class="foreign">  
<param name="property">s</param>
</generator>  
</id>  
<property name="parentSubjectName" column="parentSubjectName" length="10"/>
<one-to-one name="s" class="str.Parent" cascade="all" />
</class>
</hibernate-mapping>


Teacher.hbm.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
<property name="driverClassName"  value="com.mysql.jdbc.Driver">  </property>  
<property name="url" value="jdbc:mysql://localhost:3306/JalajSchema"> </property>  
<property name="username" value="root"></property>  
<property name="password" value=""></property>  
</bean>     
<bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
<property name="dataSource" ref="dataSource"></property>          
<property name="mappingResources">  
<list>  
<value>Teacher.hbm.xml</value>           
<value>Subject.hbm.xml</value>   
<value>Parent.hbm.xml</value>  
</list>  
</property>            
<property name="hibernateProperties">  
<props>                <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
<prop key="hibernate.hbm2ddl.auto">create</prop>  
<prop key="hibernate.show_sql">true</prop>          
</props>  
</property>  
</bean>      
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">  
<property name="sessionFactory" ref="mysessionFactory"></property>  
</bean>       
<bean id="d" class="dao.EmployeeDao">  
<property name="template" ref="template"></property>  
</bean>       
</beans>  
<hibernate-mapping>
<class name="str.Subject" table="subject"> 
<id name="subjectId" column="subjid"  />
<property name="subjectName" column="subjname" length="10"/>
<property name="forevenId" column="forevenid"  insert="false" />
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Teacher" table="Teacher1">
<id name="teacherId" column="teachid"  /> 
<property name="teacherName" column="tname" length="10"/>
<set name="subjects" cascade="all" >
<key column="forevenid" />
<one-to-many class="str.Subject" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Parent" table="Parent">
<id name="subjectId" column="subjectId" >
<generator class="foreign">  
<param name="property">s</param>
</generator>  
</id>  
<property name="parentSubjectName" column="parentSubjectName" length="10"/>
<one-to-one name="s" class="str.Parent" cascade="all" />
</class>
</hibernate-mapping>


Parent.hbm.xml

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
<property name="driverClassName"  value="com.mysql.jdbc.Driver">  </property>  
<property name="url" value="jdbc:mysql://localhost:3306/JalajSchema"> </property>  
<property name="username" value="root"></property>  
<property name="password" value=""></property>  
</bean>     
<bean id="mysessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
<property name="dataSource" ref="dataSource"></property>          
<property name="mappingResources">  
<list>  
<value>Teacher.hbm.xml</value>           
<value>Subject.hbm.xml</value>   
<value>Parent.hbm.xml</value>  
</list>  
</property>            
<property name="hibernateProperties">  
<props>                <propkey="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
<prop key="hibernate.hbm2ddl.auto">create</prop>  
<prop key="hibernate.show_sql">true</prop>          
</props>  
</property>  
</bean>      
<bean id="template" class="org.springframework.orm.hibernate3.HibernateTemplate">  
<property name="sessionFactory" ref="mysessionFactory"></property>  
</bean>       
<bean id="d" class="dao.EmployeeDao">  
<property name="template" ref="template"></property>  
</bean>       
</beans>  
<hibernate-mapping>
<class name="str.Subject" table="subject"> 
<id name="subjectId" column="subjid"  />
<property name="subjectName" column="subjname" length="10"/>
<property name="forevenId" column="forevenid"  insert="false" />
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Teacher" table="Teacher1">
<id name="teacherId" column="teachid"  /> 
<property name="teacherName" column="tname" length="10"/>
<set name="subjects" cascade="all" >
<key column="forevenid" />
<one-to-many class="str.Subject" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="str.Parent" table="Parent">
<id name="subjectId" column="subjectId" >
<generator class="foreign">  
<param name="property">s</param>
</generator>  
</id>  
<property name="parentSubjectName" column="parentSubjectName" length="10"/>
<one-to-one name="s" class="str.Parent" cascade="all" />
</class>
</hibernate-mapping>

s
有人能指导我如何改正吗


不要发布图片,发布代码。另外,关于
sets=newhashset(),请勿使用原始类型!问题出在您尚未发布的代码中,但消息告诉您,您为
str.Parent.subjectId
的getter方法提供了一个类型不正确的参数。什么是
str
?(您需要使用更好的变量名。)什么是
Parent
?您的问题遗漏了太多内容。@LewBloch已编辑了代码。Parent是一个类,str是一个包。请记住您需要的详细信息mentioned@LewBloch“但是消息告诉您,您为str.Parent.subjectId的getter方法提供了一个参数”我不理解你的陈述。我之前使用过Hibernate代码,它工作正常,但使用Hibernate模板它不工作。