【问题标题】:can't get data from database using spring-mvc and hibernate无法使用spring-mvc和hibernate从数据库中获取数据
【发布时间】:2015-11-11 20:14:48
【问题描述】:

这是我的代码: 我的模型类:

@Entity
@Table(name="admin")
public class Admin extends Profile{
    public Admin(){}

    public Admin(String mail, String name, String lastName, String password, Date birthDate, int gsm){
        super(mail, name, lastName, password, birthDate, gsm);
    }
}

DAO 类:

@Repository
public class AdminDAO {

    private static final Logger logger = LoggerFactory.getLogger(AdminDAO.class);

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sf){
        this.sessionFactory = sf;
    }
    @SuppressWarnings("unchecked")
    public List<Admin> listAdmins() {
        Session session = this.sessionFactory.getCurrentSession();
        List<Admin> adminsList = session.createQuery("from Admin").list();
        for(Admin a : adminsList){
            logger.info("Admin List::"+a);
        }
        return adminsList;
    }
}

我的服务类:

@Service

    public class AdminService {

        @Autowired
        private AdminDAO adminDAO;

        public void setAdminDAO(AdminDAO adminDAO) {
            this.adminDAO = adminDAO;
        }
        @Transactional
        public List<Admin> listAdmins() {
            return this.adminDAO.listAdmins();
        }
    }

当我运行我的代码时,我收到以下错误消息:

java.lang.NullPointerException 在 com.journaldev.spring.dao.AdminDAO.listAdmins(AdminDAO.java:38)

我在我的数据库中手动添加了一个管理员,但它仍然显示空指针异常 我做错了什么? 注意:我有另一个工作正常的类,它获取所有实体,当数据库为空时,它不会生成空指针异常

【问题讨论】:

  • @ErwinBolwidt 不,不是!!请先阅读问题
  • 我已经阅读了这个问题,而您显然没有阅读副本。如果你读过它,你会告诉我们哪个变量或字段是null,你可能会问为什么,因为你找不到。您也不会发布 300 行代码,而只是发布相关的部分。
  • 好的,我会编辑我的帖子
  • 你应该即兴发挥你的设置和配置,这个帖子应该会有所帮助:stackoverflow.com/questions/30399338/…

标签: java spring hibernate spring-mvc


【解决方案1】:

您错过了adminDAO 的setter 方法的@Autowired@Inject 注释。应该是

@Autowired
public void setAdminDAO(AdminDAO adminDAO) {
    this.adminDAO = adminDAO;
}

您必须使用 @Autowired@Inject 注释 Bean 的所有依赖项。

【讨论】:

  • 好的,我在我的 AdminService 类中添加了“@Autowired”注释,现在异常是在 DAO 类而不是在服务类中生成的
  • 您还必须将@Autowired 添加到sessionFactory 的设置器中。我已经更新了答案。
  • 非常感谢您!添加这些注释后发生了什么变化?你能解释一下吗:)
  • adminDAOsessionFactory 属性,其中null 因此运行时在您尝试访问它时抛出NullPointerException(例如在listAdmins 方法中)。 @Autowire@Inject 告诉弹簧容器在已知的情况下注入适当的值,瞧,属性不再是 null。有关更多详细信息,请查看spring docs
猜你喜欢
  • 2018-05-14
  • 2015-07-16
  • 2016-04-30
  • 2020-02-22
  • 1970-01-01
  • 2017-09-26
  • 2014-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多