首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointerException in SessionFactory

NullPointerException in SessionFactory
EN

Stack Overflow用户
提问于 2017-07-19 05:29:55
回答 1查看 349关注 0票数 0

使用java @Bean注释配置Hibernate

代码语言:javascript
复制
@Configuration
@ComponentScan(basePackages = {"com.worldofshopping.BackendShop"})
@ComponentScan(basePackages = {"com.worldofshopping"})
@EnableTransactionManagement
public class HibernateConfig {
    BasicDataSource dataSource;
    // Change the below final variable value based on database you choose

    private final static String DATABASE_URL = "jdbc:h2:~/rahul";
    private final static String DATABASE_DRIVER = "org.h2.Driver";
    private final static String DATABASE_DIALECTS = "org.hibernate.dialect.H2Dialect";
    private final static String DATABASE_USERNAME = "sa";
    private final static String DATABASE_PASSWORD = "sa";

    // Database will be available
    @Bean("dataSource")
    public DataSource getSource() {
        dataSource = new BasicDataSource();
        // Providing database connection Information
        dataSource.setDriverClassName(DATABASE_DRIVER);
        dataSource.setUrl(DATABASE_URL);
        dataSource.setUsername(DATABASE_USERNAME);
        dataSource.setPassword(DATABASE_PASSWORD);

        return dataSource;
    }

    // Database will be available
    @Autowired
    @Bean
    public SessionFactory getSessionFactory(DataSource datasource) {
        LocalSessionFactoryBuilder builder = new LocalSessionFactoryBuilder(dataSource);
        builder.addProperties(getHibernateProperties());
        builder.scanPackages("com.worldofshopping.BackendShopndShop.dto");
        return builder.buildSessionFactory();
    }

    // For Hibernate property return
    private Properties getHibernateProperties() {
        Properties properties = new Properties();
        properties.put("hibernate.dialect", DATABASE_DIALECTS);
        properties.put("hibernate.show_sql", "true");
        properties.put("hibernate.format_sql", "true");
        properties.put("hibernate.hbm2ddl.auto", "update");

        return properties;
    }

    // HibernateTransactionManager
    @Autowired
    @Bean
    public HibernateTransactionManager getTransactionManagement(SessionFactory sessionFactory) {
        HibernateTransactionManager transactionManager = new HibernateTransactionManager(sessionFactory);
        return transactionManager;
    }
}


@Repository("userDao")
@Transactional
public class Userdaoimpl implements Userdao {

    @Autowired(required = true)
    private SessionFactory sessionFactory;

    @Override
    public User getUserByUsername(String email) {
        String command = "from User where email=:parameter";
        Query<User> query = sessionFactory.getCurrentSession().createQuery(command, User.class);
        query.setParameter("parameter", email);
        try {
            return query.getSingleResult();
        } catch (Exception ex) {
            ex.printStackTrace();
            return null;
        }
    }

    @Override
    public boolean add(User user) {
        try {
            Cart cart = new Cart();
            cart.setUser(user);
            user.setCart(cart);
            sessionFactory.getCurrentSession().save(user);
            return true;
        } catch (Exception msg) {
            msg.printStackTrace();
            System.out.println(msg);
            return false;
        }
    }

    @Override
    public boolean update(User user) {
        try {
            sessionFactory.getCurrentSession().update(user);
            return true;
        } catch (Exception msg) {
            msg.printStackTrace();
            System.out.println("Something error occured during Update " + msg);
            return false;
        }
    }

    @Override
    public boolean delete(String email) {
        User user = getUserByUsername(email);
        user.setEnabled(false);
        try {
            sessionFactory.getCurrentSession().update(user);
            return true;
        } catch (Exception msg) {
            msg.printStackTrace();
            System.out.println("Something error occured during delete");
            return false;
        }
    }

    @Override
    public User getUserById(Long user_id) {

        try {
            return sessionFactory.getCurrentSession().get(User.class, Long.valueOf(user_id));

        } catch (Exception msg) {
            msg.printStackTrace();
            System.out.println("Something error occured during Update");
            return null;
        }
    }

}

方法:

代码语言:javascript
复制
public class App {

    public static void main(String[] args) {
        User user = new User();
        user.setAddress("New Delhi");
        user.setContact("9988776655");
        user.setEmail("komal@gmail.com");
        user.setEnabled(true);
        user.setName("Komal");
        user.setPassword("komal");
        user.setRole("CUSTOMER");
        Userdao userdao = new Userdaoimpl();
        userdao.add(user);
    }
}

异常堆栈跟踪:

com.worldofshopping.BackendShop.daoimpl.Userdaoimpl.add的java.lang.NullPointerException java.lang.NullPointerException (Userdaoimpl.java:37)在com.worldofshopping.BackendShop.App.main(App.java:25)

任何人请帮助我已经开始使用@Repository("userDao") @Transactional进行事务处理。

我也试着在junit上运行,但仍然有相同的错误!!

EN

回答 1

Stack Overflow用户

发布于 2017-07-19 06:08:32

您只在您的主要方法中构造了UserUserdaoimpl!扪心自问,SessionFactory和其他@Bean将如何初始化?

尝试通过spring上下文或作为spring引导应用程序运行应用程序。然后获取userdao Bean来调用add方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45181656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档