Hibernate / UpdateCriteria: обновить столбец, указав значение другого столбца. - PullRequest
0 голосов
/ 12 декабря 2018

Я безуспешно пытался обновить столбец таблицы на основе значения другого столбца той же таблицы, используя UpdateCriteria / Hibernate.

Моя сущность выглядит следующим образом:

@Entity
@Table(name="user_session")
public class UserSession{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(name = "last_activity")
    private Date lastActivity;
    @Column(name = "session_start")
    private Date sessionStart;
    @Column(name = "session_end")
    private Date sessionEnd;
}

Я хочу создать UpdateCriteria, который соответствует:

UPDATE user_session SET session_end = last_activity WHERE session_end IS NULL;

Я пробовал несколько версий следующего кода:

CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaUpdate<UserSession> criteriaUpdate = builder.createCriteriaUpdate(UserSession.class);
Root<UserSession> root = criteriaUpdate.from(UserSession.class);
criteriaUpdate.set("sessionEnd", root.get("lastActivity"));
criteriaUpdate.where(root.get("sessionEnd").isNull());
session.createQuery(criteriaUpdate).executeUpdate();

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...