Мне нужно обновить и вставить данные в таблицу, используя Java Query Language. Вот мой код класса DAO:
public class ApprovalDao {
@Autowired
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public SessionFactory getSessionFactory() {
return sessionFactory;
}
public void addEntity(EntityValues entity) {
getSessionFactory().getCurrentSession().save(entity);
}
public void deleteEntityValue(EntityValues entity) {
getSessionFactory().getCurrentSession().delete(entity);
}
для обновления данных полей в таблице:
public void updateField(){
Query q=getSessionFactory().getCurrentSession().createQuery(
" update SapOrderHDR set
SAP_ORDER_STATUS = 'A' where BC_ORDER_NO='" + bcOrderNo + "'");
q.executeUpdate();
}
Этот запрос будет обновлять таблицу, где BC_ORDER_NO=var
и set BC_ORDER_NO ='A'
. SapOrderHDR
- класс сущности таблицы
BC_ORDER_NO = :no
используйте BC_ORDER_NO = :no
и q.setParameter("no", bcOrderNo)
.
Во-первых, если вы используете @Autowired
annotation setter/getteer
они setter/getteer
. В вашем случае вы должны сделать что-то вроде этого:
session = sessionFactory.openSession();
session.beginTransaction();
session.update(user);
session.getTransaction().commit();
И окружайте его конструкцией try/catch
.