Java Spring JPA изменить поле в БД
Есть табличка с id и owner.
@Entity
@Table(name = "message")
public class Message {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String owner;
....
// Getters, Setters and Constructors
Кладу в БД так:
@PostMapping("/main")
public String add (
@RequestParam String owner,
@RequestParam String text,
@RequestParam String sn, Map<String, Object> model) {
Message message = new Message (text, sn, owner);
messageRepo2.save(message);
}
return "main";
Работа с данными
import org.springframework.data.repository.CrudRepository;
public interface MessageRepo2 extends CrudRepository<Message, Long> {
Подскажите как изменить owner в таблице postgres? Любой вариант подойдёт (удалить>добавить новое или изменить). Пробовал что-то типа
@Modifying
@Query("update message set owner = ?1 where id = ?2")
int setFixedOwnerFor(String owner, Integer id);
но приложение не запускается с ошибкой: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'messageModify': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract int com.example.webapp.repos.MessageModify.setFixedOwnerFor(java.lang.String,java.lang.Integer)!
Ответы (1 шт):
Автор решения: kent
→ Ссылка
Обработка запроса:
@PostMapping("/update")
public String modifyowner (
@RequestParam String owner,
@RequestParam String sn,
@RequestParam String text,
@RequestParam Integer id,
Map<String, Object> model) {
Message messages = new Message (owner, id, sn, text);
messageModify.save(messages);
model.put("messages", messages);
return "/main";
}
Запрос:
@Transactional
public interface MessageModify extends CrudRepository<Message, Long>{
@Modifying
@Query("update Message m set m.owner = ?1, m.text = ?2, m.sn = ?3 where m.id = ?4")
String setFixedOwnerFor(String owner, String text, String sn, Integer id);
}
Конструктор
public Message(String owner, Integer id, String sn, String text) {
this.id = id;
this.owner = owner;
this.sn = sn;
this.text = text;
}