实体类FileManager:
package com.dynastarter.sc.file.po;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
/**
@author MyEclipse Persistence Tools
*/
@Entity
@Table(name = "filemanager")
public class FileManager implements java.io.Serializable {
private Long id;
private String filename;
private Integer fileSize;
private String fileContentType;
private Long site;
private Date uploadTime;
private Integer parentDirectory;
private Byte isDirectory;
private Byte isFile;
// Constructors
/** default constructor */
public FileManager() {
}
// Property accessors
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
@Column(name = "filename")
public String getFilename() {
return this.filename;
}
public void setFilename(String filename) {
this.filename = filename;
}
@Column(name = "fileSize")
public Integer getFileSize() {
return this.fileSize;
}
public void setFileSize(Integer fileSize) {
this.fileSize = fileSize;
}
@Column(name = "fileContentType")
public String getFileContentType() {
return this.fileContentType;
}
public void setFileContentType(String fileContentType) {
this.fileContentType = fileContentType;
}
@Column(name = "site")
public Long getSite() {
return this.site;
}
public void setSite(Long site) {
this.site = site;
}
@Temporal(TemporalType.DATE)
@Column(name = "uploadTime")
public Date getUploadTime() {
return this.uploadTime;
}
public void setUploadTime(Date uploadTime) {
this.uploadTime = uploadTime;
}
@Column(name = "parentDirectory")
public Integer getParentDirectory() {
return this.parentDirectory;
}
public void setParentDirectory(Integer parentDirectory) {
this.parentDirectory = parentDirectory;
}
@Column(name = "isDirectory")
public Byte getIsDirectory() {
return this.isDirectory;
}
public void setIsDirectory(Byte isDirectory) {
this.isDirectory = isDirectory;
}
@Column(name = "isFile")
public Byte getIsFile() {
return this.isFile;
}
public void setIsFile(Byte isFile) {
this.isFile = isFile;
}
}
-----但是根据id获得对象是就报错
dao:
@Repository
public class FileManagerDAO extends HibernateDao {
/**
service:
@Service
@Transactional
public class FileManagerService {
@Autowired
private FileManagerDAO fileManagerDAO;
public FileManager getRootFileManager(){
return fileManagerDAO.get(new Long(1));
}
public FileManager getFileManager(Long id){
return fileManagerDAO.get(id);
}
@Transactional
public void deleteFileManager(Long id){
fileManagerDAO.delete(id);
}
public List<FileManager> getFileManagerByParentId(int parentId){
return fileManagerDAO.getFileManagerByParentId(parentId);
}
action中调用:
public String loadDocument() throws Exception{
StringBuilder sb=new StringBuilder("[");
String root=getRequest().getParameter("root");
if(root!=null&&"true".equals(root)){
FileManager fileManager= fileManagerService.getRootFileManager();
System.out.println(fileManager.getId());
sb.append("{");
sb.append("'id':").append(""+fileManager.getId()+",");
sb.append("'fileName':").append("'"+fileManager.getFilename()+"',");
sb.append("'fileSize':").append(fileManager.getFileSize()+",");
sb.append("'fileContentType':").append("'"+fileManager.getFileContentType()+"',");
// sb.append("'uploadUser':").append("'"+fileManager.getUploadUser().getPersonName()+"',");
sb.append("'uploadTime':").append("'"+fileManager.getUploadTime()+"',");
sb.append("'isDirectory':").append("'"+fileManager.getIsDirectory()+"',");
sb.append("'isFile':").append("'"+fileManager.getIsFile()+"',");
sb.append("'childFiles':");
sb.append("''");
sb.append("}");
/* sb.append("{");
sb.append("'id':").append("1,");
sb.append("'fileName':").append("'呵呵',");
sb.append("'parentDirectory':").append("-1");
sb.append("}");*/
}
else{
List list=fileManagerService.getFileManagerByParentId(id);
for(FileManager fileManager1:list){
sb.append("{");
sb.append("'id':").append(""+fileManager1.getId()+",");
sb.append("'fileName':").append("'"+fileManager1.getFilename()+"',");
sb.append("'fileSize':").append(fileManager1.getFileSize()+",");
sb.append("'fileContentType':").append("'"+fileManager1.getFileContentType()+"',");
// sb.append("'uploadUser':").append("'"+fileManager1.getUploadUser().getPersonName()+"',");
sb.append("'uploadTime':").append("'"+fileManager1.getUploadTime()+"',");
sb.append("'isDirectory':").append("'"+fileManager1.getIsDirectory()+"',");
sb.append("'isFile':").append("'"+fileManager1.getIsFile()+"',");
sb.append("},");
}
}
if(sb.lastIndexOf(",")>0){
sb=new StringBuilder(sb.substring(0,sb.lastIndexOf(",")));
}
sb.append("]");
System.out.println(sb.toString());
getResponse().setContentType("text/html;charset=UTF-8");
getResponse().getWriter().write(sb.toString());
return null;
}
关于这个问题,首先要肯定的是在你的action中session已关闭。
那么你所要做的是进行调试。
找出在openSessionInViewFilter中是否正确步入,
或者session是在那里被人为关闭了。
如果你觉得麻烦而不愿意调试的话,我还有一个办法,使是强制加载。
在session尚未关闭的时候使用Hibernate.initialize(a)。那么就会将a强制为游离态时也可以使用的实体。
如上面改为:
public List getFileManagerByParentId(int id){
[code="java"]List list=this.getSession().createQuery(" from FileManager where parentDirectory="+id+" ").list();
for(list){
Hibernate.initialize(list.i);
}
return list;
} [/code]
将上面的伪码换为java语句就应该可以了
提问的时候最后把错误信息 也贴一下! :arrow:
web。xml 配置这个了没?
openSessionInViewFilter
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
openSessionInViewFilter
.do
openSessionInViewFilter
.jsp
[quote]public class FileManagerDAO extends HibernateDao { [/quote]
HibernateDao 这个里面是否有 session 或者sessionfactory 的注入呢?检查下!
不是很复杂的话 给我发过来!我帮你看看! (项目 复杂就...我也没太多时间!
[code="java"]System.out.println(fileManager.getId());
sb.append("{");
sb.append("'id':").append(""+fileManager.getId()+",");
sb.append("'fileName':").append("'"+fileManager.getFilename()+"',");
sb.append("'fileSize':").append(fileManager.getFileSize()+",");
sb.append("'fileContentType':").append("'"+fileManager.getFileContentType()+"',");
// sb.append("'uploadUser':").append("'"+fileManager.getUploadUser().getPersonName()+"',");
sb.append("'uploadTime':").append("'"+fileManager.getUploadTime()+"',");
sb.append("'isDirectory':").append("'"+fileManager.getIsDirectory()+"',");
sb.append("'isFile':").append("'"+fileManager.getIsFile()+"',");
sb.append("'childFiles':");
sb.append("''");
sb.append("}");
/* sb.append("{");
sb.append("'id':").append("1,");
sb.append("'fileName':").append("'呵呵',");
sb.append("'parentDirectory':").append("-1");
sb.append("}");*/ [/code]
将字符串中的内容放到一个jsp页面中,再然后用action跳过去试试。
或者试试将web.xml改为:
[code="xml"]
openSessionInViewFilter
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
openSessionInViewFilter
/*
[/code]