我想在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但它沒有工作。我找到了另一個解決方案併發布爲答案 –