2015-10-25 63 views
1

我在Hibernate中使用Spring MVC,其目的是获取表数据并将其存储在一个列表中。这里使用的实体类:SpringMVC + Hibernate:criteria.list()返回一个空的列表

package com.bng.core.entity;

// default package 
// Generated Oct 25, 2015 4:38:03 PM by Hibernate Tools 3.4.0.CR1 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import static javax.persistence.GenerationType.IDENTITY; 
import javax.persistence.Id; 
import javax.persistence.Table; 

/** 
* servicenames generated by hbm2java 
*/ 
@Entity 
@Table(name = "servicenames") 
public class ServiceNames implements java.io.Serializable { 

    private Integer id; 
    private String serviceName; 

    public ServiceNames() { 
    } 

    public ServiceNames(String servicename) { 
     this.serviceName = servicename; 
    } 

    @Id 
    @GeneratedValue(strategy = IDENTITY) 
    @Column(name = "id", unique = true, nullable = false) 
    public Integer getId() { 
     return this.id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    @Column(name = "servicename", length = 25) 
    public String getServiceName() { 
     return this.serviceName; 
    } 

    public void setServiceName(String servicename) { 
     this.serviceName = servicename; 
    } 


} 

而且用来获取列表的方法:

@Transactional 
    @Override 
    public List<ServiceNames> getServiceNames() { 
     Logger.sysLog(LogValues.APP_INFO, this.getClass().getName(), "Getting all Service names."); 
     Session session = sessionFactoryGlobal.openSession(); 
     Criteria criteria = session.createCriteria(ServiceNames.class); 
     List<ServiceNames> serviceNamesList = criteria.list(); 
     session.close(); 
     return serviceNamesList; 
    } 

当调用该方法返回一个空列表。请提出它出错的地方?

回答

0

我想你确定你的表servicenames有数据。所以这样的问题可能在@Transactional无法正常工作。尝试通过手动打开和关闭事务来获取没有@Transactional的列表。