2016-11-08 9 views
0

привет, все я новичок в спящем режиме. я пишу код с распорками + весной + спящим режимом, я столкнуться с проблемой в этом кодеuniqueResult устарел в спящем режиме 5.2.2? как я могу сделать?

import org.hibernate.Query; 
import org.springframework.orm.hibernate3.support.HibernateDaoSupport; 
import com.integration.entity.User; 
public class UserDAOImpl extends HibernateDaoSupport implements UserDAO { 
@Override 
public User getUser(String name) { 
    // TODO Auto-generated method stub 
    String hsql="from User u where u.name='"+name+"'"; 
    User result=(User)((Query) this.getHibernateTemplate().find(hsql)).uniqueResult(); 
    return result; 
} 

вопрос запрос и uniqueResult() являются устаревшим, как буду я изменить мой код? спасибо

ответ

1

Проблема не только в вашем методе. Отверстие класса HibernateDaoSupport нежелателен он сказал here

Я рекомендую вам настроить ваш SessionFactory с помощью Spring (как я вижу, вы используете его) и использовать createQuery способ передать туда свой HQL. Вот пример:

Настройка сеанса завода:

<bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean" 
     p:packagesToScan="-your-model-" 
     p:hibernateProperties-ref="-your-properties-" 
     p:dataSource-ref="-your-datasource-"/> 

Метод DAO:

private final SessionFactory sessionFactory; 

// Injecting session factory via constructor 
@Autowired 
public UserDAO(SessionFactory sessionFactory) { 
    this.sessionFactory = sessionFactory; 
} 

String hql="from User u where u.name=:name"; 

public User getByUsername(String name) { 
    return sessionFactory.getCurrentSession() 
      .createQuery(hql, User.class) 
      .setParameter("name", name) 
      .uniqueResult(); 
} 

Кроме того, ваш код не мы ненадежно. Вы должны использовать параметры запроса для предотвращения внедрения sql. Я показываю его в своем методе. Читайте о фабрике сессии и вводите ее в DAO.

Удачи.


EDIT

Кроме того, это всего лишь пример. Вы можете настроить все, как вам угодно (через java-код, а не xml, например)

Смежные вопросы