gpt4 book ai didi

java - GenericDao,类 为 null

转载 作者:行者123 更新时间:2023-11-30 03:51:50 25 4
gpt4 key购买 nike

我正在实现 GenericDao。我有 2 个方法的问题 - getAll() 和 getById(Long id),实体类具有空值。看来类(class)没有设置。我怎么解决这个问题 ?

 @Repository
public class GenericDaoImpl<T> implements GenericDao<T> {

private Class<T> clazz;

@Autowired
SessionFactory sessionFactory;

public void setClazz(final Class<T> clazzToSet) {
this.clazz = clazzToSet;
}

public T getById(final Long id) {
return (T) this.getCurrentSession().get(this.clazz, id);
}

public List<T> getAll() {

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(
this.clazz);
return criteria.list();

}
protected final Session getCurrentSession() {
return this.sessionFactory.getCurrentSession();
}
}

PersonDao

    public interface PersonDao extends GenericDao<Person> { }

PersonDaoImpl

 @Repository("PersonDAO")
public class PersonDaoImpl extends GenericDaoImpl<Person> implements PersonDao {}

服务:

@Service
public class PersonServiceImpl implements PersonService {

@Autowired
private PersonDao personDao;


@Transactional
public List<Person> getAll() {

return personDao.getAll();
}


@Transactional
public Person getById(Long id) {
return personDao.getById(id);
}
}

最佳答案

您必须设置 PersonDaoclazz 属性。这可以通过声明 post initialization callback 来完成使用@PostConstruct注释。

 @Repository("PersonDAO")
public class PersonDaoImpl extends GenericDaoImpl<Person> implements PersonDao {

@PostConstruct
public void init(){
super.setClazz(Person.class);
}
}

关于java - GenericDao,类 <T> 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24229225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com