hibernate查询连接对象死活都是空,lazy也设置为false了,就是不知道为什么

JonyShan 2017-03-01 04:27:59
学生表与学院,专业,班级是多对一关系,查询学生时,班级不为空,但是学院与专业对象都是空,配置文件lazy也设置为false了,求大神解决

下面时学生实体类
package com.itheima.bos.domain;

import java.util.HashSet;
import java.util.Set;

/**
* Student entity. @author MyEclipse Persistence Tools
*/

public class Student implements java.io.Serializable {

// Fields

private String sid;
private Grade grade;//班级
private Specialty specialty;//专业
private Academy academy;//学院
private Teacher teacher;//指导教师
private Graduationname graduationname;//毕设课题
private String spassword;
private String sname;
private String ssex;
private Integer sage;
private Integer first;//开题成绩
private Integer middle;//中期成绩
private Integer finish;//结业成绩
private Set replygroups = new HashSet(0);//答辩小组

// Constructors

/** default constructor */
public Student() {
}

/** minimal constructor */
public Student(String sid) {
this.sid = sid;
}

/** full constructor */
public Student(String sid, Grade grade, Specialty specialty,
Academy academy, Teacher teacher, Graduationname graduationname,
String spassword, String sname, String ssex, Integer sage,
Integer first, Integer middle, Integer finish, Set replygroups) {
this.sid = sid;
this.grade = grade;
this.specialty = specialty;
this.academy = academy;
this.teacher = teacher;
this.graduationname = graduationname;
this.spassword = spassword;
this.sname = sname;
this.ssex = ssex;
this.sage = sage;
this.first = first;
this.middle = middle;
this.finish = finish;
this.replygroups = replygroups;
}


public String getGradename(){
return grade.getClassName();
}

public String getSpecialtyname() {
return this.specialty.getSpname();
}

public String getAcademyname() {
return this.academy.getAcname();
}

public String getTeachername() {
return this.teacher.getTname();
}

// Property accessors

public String getSid() {
return this.sid;
}

public void setSid(String sid) {
this.sid = sid;
}

public Grade getGrade() {
return this.grade;
}

public void setGrade(Grade grade) {
this.grade = grade;
}

public Specialty getSpecialty() {
return this.specialty;
}

public void setSpecialty(Specialty specialty) {
this.specialty = specialty;
}

public Academy getAcademy() {
return this.academy;
}

public void setAcademy(Academy academy) {
this.academy = academy;
}

public Teacher getTeacher() {
return this.teacher;
}

public void setTeacher(Teacher teacher) {
this.teacher = teacher;
}

public Graduationname getGraduationname() {
return this.graduationname;
}

public void setGraduationname(Graduationname graduationname) {
this.graduationname = graduationname;
}

public String getSpassword() {
return this.spassword;
}

public void setSpassword(String spassword) {
this.spassword = spassword;
}

public String getSname() {
return this.sname;
}

public void setSname(String sname) {
this.sname = sname;
}

public String getSsex() {
return this.ssex;
}

public void setSsex(String ssex) {
this.ssex = ssex;
}

public Integer getSage() {
return this.sage;
}

public void setSage(Integer sage) {
this.sage = sage;
}

public Integer getFirst() {
return this.first;
}

public void setFirst(Integer first) {
this.first = first;
}

public Integer getMiddle() {
return this.middle;
}

public void setMiddle(Integer middle) {
this.middle = middle;
}

public Integer getFinish() {
return this.finish;
}

public void setFinish(Integer finish) {
this.finish = finish;
}

public Set getReplygroups() {
return this.replygroups;
}

public void setReplygroups(Set replygroups) {
this.replygroups = replygroups;
}

}


学院实体类
public class Academy implements java.io.Serializable {

// Fields

private String acid;
private String acname;
private String university;
private Set students = new HashSet(0);
private Set specialties = new HashSet(0);
private Set grades = new HashSet(0);
private Set teachers = new HashSet(0);


// Constructors

/** default constructor */
public Academy() {
}

/** minimal constructor */
public Academy(String acid) {
this.acid = acid;
}

/** full constructor */
public Academy(String acid, String acname, String university, Set students, Set specialties, Set grades, Set teachers) {
this.acid = acid;
this.acname = acname;
this.university = university;
this.students = students;
this.specialties = specialties;
this.grades = grades;
this.teachers = teachers;
}


// Property accessors

public String getAcid() {
return this.acid;
}

public void setAcid(String acid) {
this.acid = acid;
}

public String getAcname() {
return this.acname;
}

public void setAcname(String acname) {
this.acname = acname;
}

public String getUniversity() {
return this.university;
}

public void setUniversity(String university) {
this.university = university;
}

public Set getStudents() {
return this.students;
}

public void setStudents(Set students) {
this.students = students;
}

public Set getSpecialties() {
return this.specialties;
}

public void setSpecialties(Set specialties) {
this.specialties = specialties;
}

public Set getGrades() {
return this.grades;
}

public void setGrades(Set grades) {
this.grades = grades;
}

public Set getTeachers() {
return this.teachers;
}

public void setTeachers(Set teachers) {
this.teachers = teachers;
}

}


班级实体类
public class Grade  implements java.io.Serializable {


// Fields

private String classId;
private Specialty specialty;
private Academy academy;
private String className;
private Set students = new HashSet(0);


// Constructors

/** default constructor */
public Grade() {
}

/** minimal constructor */
public Grade(String classId) {
this.classId = classId;
}

/** full constructor */
public Grade(String classId, Specialty specialty, Academy academy, String className, Set students) {
this.classId = classId;
this.specialty = specialty;
this.academy = academy;
this.className = className;
this.students = students;
}


// Property accessors
public String getSpname(){
return specialty.getSpname();
}

public String getAcademyname(){
return academy.getAcname();
}

public String getClassId() {
return this.classId;
}

public void setClassId(String classId) {
this.classId = classId;
}

public Specialty getSpecialty() {
return this.specialty;
}

public void setSpecialty(Specialty specialty) {
this.specialty = specialty;
}

public Academy getAcademy() {
return this.academy;
}

public void setAcademy(Academy academy) {
this.academy = academy;
}

public String getClassName() {
return this.className;
}

public void setClassName(String className) {
this.className = className;
}

public Set getStudents() {
return this.students;
}

public void setStudents(Set students) {
this.students = students;
}



}


学生映射文件
<?xml version="1.0" encoding="utf-8"?>

<hibernate-mapping>
<class name="com.itheima.bos.domain.Student" table="student" lazy="false">
<id name="sid" type="java.lang.String">
<column name="sid" length="12" />
<generator class="assigned" />
</id>
<many-to-one name="grade" lazy="false" class="com.itheima.bos.domain.Grade" fetch="select">
<column name="grade" length="10" />
</many-to-one>
<many-to-one name="specialty" lazy="false" class="com.itheima.bos.domain.Specialty" fetch="select">
<column name="specialty_id" length="15" />
</many-to-one>
<many-to-one name="academy" lazy="false" class="com.itheima.bos.domain.Academy" fetch="select">
<column name="academy_id" length="15" />
</many-to-one>
<many-to-one name="teacher" lazy="false" class="com.itheima.bos.domain.Teacher" fetch="select">
<column name="teacher_id" length="5" />
</many-to-one>
<many-to-one name="graduationname" lazy="false" class="com.itheima.bos.domain.Graduationname" fetch="select">
<column name="graduationname" length="15" />
</many-to-one>
<property name="spassword" type="java.lang.String">
<column name="spassword" length="20" />
</property>
<property name="sname" type="java.lang.String">
<column name="sname" length="10" />
</property>
<property name="ssex" type="java.lang.String">
<column name="ssex" length="2" />
</property>
<property name="sage" type="java.lang.Integer">
<column name="sage" />
</property>
<property name="first" type="java.lang.Integer">
<column name="first" />
</property>
<property name="middle" type="java.lang.Integer">
<column name="middle" />
</property>
<property name="finish" type="java.lang.Integer">
<column name="finish" />
</property>
<set name="replygroups" table="student_regroup" >
<key>
<column name="student_id" length="15" not-null="true" />
</key>
<many-to-many lazy="false" entity-name="com.itheima.bos.domain.Replygroup">
<column name="regroup_id" length="15" not-null="true" />
</many-to-many>
</set>
</class>
</hibernate-mapping>
...全文
234 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JonyShan 2017-03-03
  • 打赏
  • 举报
回复
都是有值的,名字写成一样指的是什么? 这个是我在转json对象遇到的错误,一直搞不清楚为什么,有人说是延迟加载问题但是我已经把lazy改了,搞不清楚
----------
freemarker.template.TemplateModelException: Method public java.lang.String org.apache.commons.lang.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:130)
	at freemarker.ext.beans.SimpleMethodModel.get(SimpleMethodModel.java:138)
	at freemarker.core.DynamicKeyName.dealWithNumericalKey(DynamicKeyName.java:111)
	at freemarker.core.DynamicKeyName._getAsTemplateModel(DynamicKeyName.java:90)
	at freemarker.core.Expression.getAsTemplateModel(Expression.java:89)
	at freemarker.core.Expression.getStringValue(Expression.java:93)
	at freemarker.core.DollarVariable.accept(DollarVariable.java:76)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IfBlock.accept(IfBlock.java:82)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.IfBlock.accept(IfBlock.java:82)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.MixedContent.accept(MixedContent.java:92)
	at freemarker.core.Environment.visit(Environment.java:221)
	at freemarker.core.Environment.process(Environment.java:199)
	at freemarker.template.Template.process(Template.java:259)
	at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:845)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:567)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:233)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)
	at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)
	at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
	at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
	at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
	at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
	at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
	at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
	at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at freemarker.ext.beans.SimpleMemberModel.unwrapArguments(SimpleMemberModel.java:86)
	at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:106)
	... 61 more
jiajing1990_ 2017-03-01
  • 打赏
  • 举报
回复
<many-to-one name="grade" lazy="false" class="com.itheima.bos.domain.Grade" fetch="select"> <column name="grade" length="10" /> </many-to-one> <many-to-one name="specialty" lazy="false" class="com.itheima.bos.domain.Specialty" fetch="select"> <column name="specialty_id" length="15" /> </many-to-one> <many-to-one name="academy" lazy="false" class="com.itheima.bos.domain.Academy" fetch="select"> <column name="academy_id" length="15" /> </many-to-one> <many-to-one name="teacher" lazy="false" class="com.itheima.bos.domain.Teacher" fetch="select"> <column name="teacher_id" length="5" /> 你的teacher不为空吗? 单独用sql执行不为空吗? 试试把名字写成一样的看看

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧