我想在SpringBoot中创建一个本机查询返回到DTO。 但是,我的SessionFactory返回null
。 我在这里看过很多问题,但似乎没有人帮忙。Spring引导SessionFactory返回空指针
我在这里做错了什么?
application.properties
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
SessionFactoryConfig.class
import org.hibernate.SessionFactory;
import org.hibernate.jpa.HibernateEntityManagerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SessionFactoryConfig {
@Bean
public SessionFactory sessionFactory(HibernateEntityManagerFactory hemf) {
return hemf.getSessionFactory();
}
}
ReportAverageCost.class
import lombok.*;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.hibernate.transform.ResultTransformer;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Date;
import java.util.List;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ReportAverageCost {
@Autowired
private SessionFactory sessionFactory;
public Date date;
public List getReportAverageCost() throws Exception {
String q = "SELECT (...)";
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(q);
query.addScalar("date");
ResultTransformer aliasToBean = Transformers.aliasToBean(ReportAverageCost.class);
List result = query.setResultTransformer(aliasToBean).list();
return result;
}
}
感谢@Sagar但它没有工作。我找到了另一个解决方案并发布为答案 –