Size: a a a

2020 May 29

TM

Tailer McLayer in Java & Co
Ilya Frontend
а как ты вручную меняешь? через идею?
да, прикрепли бы скрин, но тут нельзя
источник

TM

Tailer McLayer in Java & Co
Такая проблема распространяется только на только что добавленные записи
источник

IF

Ilya Frontend in Java & Co
Tailer McLayer
Такая проблема распространяется только на только что добавленные записи
залей куда то исходники, я хз) Что бы сбрасывалось если ты вручную значение меняешь, это чето новенькое
источник

РН

Роман Нагаев... in Java & Co
Tailer McLayer
Всем привет, 4-й день не могу решить проблему.
@Transactional
 public void moveFile(Long folderId, Long messageId) {

   com.tailer.model.Message message = messageRepository.findByMessageId(messageId);
   message.setFolder(folderId);
   messageRepository.save(message);
 }
Пытаюсь у только что добавленной записи изменить значение, но оно просто сбрасывается. Даже если изменить в бд вручную - то же самое. Но если перезапустить приложение - то update работает. В качестве бд - postresql-12
package com.tailer.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "telegram_cloud_messages")
@Builder
public class Message {

 @Id
 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "message_generator")
 @SequenceGenerator(name = "message_generator", sequenceName = "message_sequence", allocationSize = 1)
 private Long id;

 private Long messageId;

 private Long folder;

 private String renamed;

 private Boolean isRenamed;
}
findByMessageId возвращает managed object, все его изменения попадают в базу при вызове сеттера, не надо его ещё через репозиторий сохранять

в какой момент времени и как ты проверяешь обновились данные или нет?
источник

TM

Tailer McLayer in Java & Co
Роман Нагаев
findByMessageId возвращает managed object, все его изменения попадают в базу при вызове сеттера, не надо его ещё через репозиторий сохранять

в какой момент времени и как ты проверяешь обновились данные или нет?
В режиме дебаг смотрю значение объекта до выполения set(), а потом после.  Значение меняется но после save() открываю таблицу через идею и обновляю, значение у записи такое же, как и было прежде, не обновилось тобишь
источник

TM

Tailer McLayer in Java & Co
получается просто вот так надо сделать?
com.tailer.model.Message message = messageRepository.findByMessageId(messageId);
   message.setFolder(folderId);
источник

РН

Роман Нагаев... in Java & Co
Tailer McLayer
получается просто вот так надо сделать?
com.tailer.model.Message message = messageRepository.findByMessageId(messageId);
   message.setFolder(folderId);
поидее да, но после этого изменения не попадут сразу в базу, они будут в кеше до flush'а а окончательно они попадут в базу после коммита транзакции
источник

TM

Tailer McLayer in Java & Co
а как это сделать?
источник

TM

Tailer McLayer in Java & Co
через

entityManager.flush()?
источник

РН

Роман Нагаев... in Java & Co
Tailer McLayer
а как это сделать?
что сделать?
источник

TM

Tailer McLayer in Java & Co
Роман Нагаев
что сделать?
коммит транзакции, чтобы изменения применились
источник

РН

Роман Нагаев... in Java & Co
Tailer McLayer
коммит транзакции, чтобы изменения применились
читай про декларативное управление транзакциями
источник

РН

Роман Нагаев... in Java & Co
ещё можешь посмотреть на flush + refresh, тогда ты получишь изменения до коммита транзакции, но сохранится риск отката транзакции по констрейнтам на коммите
источник

РН

Роман Нагаев... in Java & Co
меня смущает что у тебя поле не обновилось, оно вродь должно было
источник

РН

Роман Нагаев... in Java & Co
возможно refresh поможет от этого
источник

TM

Tailer McLayer in Java & Co
сейчас попробую
источник

И

Илья in Java & Co
Бекмамбет Трахтенберг
тогда у тебя есть энтити менеджер и аннотация @PersistenceContext, почитай
Спасибо огромное))
😘
источник

A

Argo in Java & Co
Ребята, глупый вопрос. Если в моем проекте для себя (но я хочу его показать работодателю на собеседовании ещё) много комментариев и ТОДО для себя на будущее, так как не знаю/не хочу пока это решать, то это будет нормально? Или все таки своего рода моветон и поудалять этот информационный шум из кода?
источник

R

Roman in Java & Co
Argo
Ребята, глупый вопрос. Если в моем проекте для себя (но я хочу его показать работодателю на собеседовании ещё) много комментариев и ТОДО для себя на будущее, так как не знаю/не хочу пока это решать, то это будет нормально? Или все таки своего рода моветон и поудалять этот информационный шум из кода?
Лучше конечно же поудалять
источник

A

Argo in Java & Co
Roman
Лучше конечно же поудалять
Возможно под словом много я погорячился всего лишь около 3 маленьких фраз, а ТОДО только 4 страницах таймлифа по два слова
источник