2016-04-14 5 views
0

У меня есть таблица (USERS) с колоннами:Hibernate SaveOrUpdate на составных ключей

  1. table_id - Integer
  2. USER_ID - Integer
  3. ДАТА - DateTime
  4. VALUE - Double

Этот преобразуется в класс User:

@Table(name = "USERS") 
@Entity 
public class User implements Serializable { 

private static final long serialVersionUID = -6894800373034942671L; 

@Transient 
private String userName; 

@Id 
@Column(name = "TABLE_ID") 
private Integer tableId;  

@Column(name = "USER_ID") 
private Integer userId; 

@Column(name = "VALUE") 
private Double value; 

@Column(name = "DATE") 
private Date date; 

public User() { 

} 
// Getters and setters here 

}

Таблица Ограничения на месте с помощью индексов:

  1. table_id - уникальный и кластерный
  2. USER_ID, DATE - уникальный и не кластерный

Я создам список из User объектов, каждый из которых имеет разные userId. Если для конкретного date существует запись пользователя с userId в таблице, я хочу обновить ее value еще вставить новый объект User.

Нужно ли выбирать, используя HQL, создать новые User объекты для тех, которые отсутствуют, а затем запустить saveOrUpdate? Или есть лучший способ?

Как достичь вышеуказанного с помощью спящего режима?

ответ

0

SaveOrUpdate метод будет делать хорошо .. но не забывайте, если вы хотите, чтобы обновить запись, вам придется извлечь его из базы данных первого для Ex:

//in your Dao Class 
... 
public void save(User user){ 

    Transaction tx = null; 
    Session session = SessionFactoryUtil.getInstance().getCurrentSession(); 
    try { 
     tx = session.beginTransaction(); 
     session.saveOrUpdate(user); 
     tx.commit; 
    }catch(Exception e){ 
     tx.rollBack(); 
    } 
} 

public User getUserById(int user_id){ 
    User user=(User) session.get(User.class, user_id); 
    return user; 
} 

//creating new User 
User user1=new User(); 
user1.setName("Mohamed"); 
yourDao.save(user1); 


//updating an existing User 
User user2=yourDao.getUserById(19); 
user2.setCountry("Morocco"); 
yourDao.save(user2); 
Смежные вопросы