У меня есть простое веб-приложение, которое проверяет состояние столбца, оно может быть активным (значение 1) или устаревшим (значение 2).
Если оно активно, ему будет предоставлена возможность редактироватьЭто.Тогда, если он устарел, ему будет предоставлена возможность сделать это.Проблема в том, что когда я получаю устаревший документ, ему все равно будет предоставлена возможность редактирования.Поэтому я подумывал обновить вручную столбец состояния в моей таблице непосредственно перед отображением устаревшего документа, чтобы фактически отключить возможность редактирования.
Я знаю, что это будет работать, потому что я непосредственно изменил значение в самом столбце, ноконечно, мне нужно реализовать логику в самом коде.
Это фрагмент файла File.java:
private EntityManager em;
public Node get_folder(long fileID) {
try {
List resList = nodeFacade.list_parent(fileID, LinkType.FILE);
List resList1 = nodeFacade.list_parent(fileID, LinkType.VER_LINKS);
if (resList == null) {
throw new Exception("failed to get folder of a file." + nodeFacade.getMsg());
}
if (resList.size() > 1) {
throw new Exception("one file cannot be attached to more than one folder(s).");
}
//fixed bugs: modified here to display different version
if(resList1.size()==1){
Fmedia fmedia = new Fmedia(fileID);
fmedia.setFstatus(2);
/// This section where I expect the status to be changed from 1 to 2
return (Node) resList1.get(0);
}
return (Node) resList.get(0);
} catch (Exception e) {
e.printStackTrace();
msg = CoreUtil.wrapMsg(CoreUtil.FUNC_ERROR,
this.getClass().getName(), "get_folder", e.getMessage());
return null;
}
}
. Учитывая эту логику, он должен изменить существующее значение с 1 на 2 непосредственно перед отображением документа, чтобы иметь возможность отключить редактирование.,Проблема в том, что в таблице ничего не обновляется, ничего не меняется, и я не знаю почему.Запущена отладка, и она передает правильный идентификатор, но не меняет / не обновляет столбец состояния.
Fmedia.java:
@Entity
@Table(name = "fmedia")
public class Fmedia implements Serializable {
@Column(name = "FSTATUS")
private int fstatus;
public int getFstatus() {
return fstatus;
}
public void setFstatus(int fstatus) {
this.fstatus = fstatus;
}
Он использует Hibernate для вставки или обновлениятаблица, но добавление em.persist(fmedia)
не помогает и дает больше ошибок.Кроме того, я не могу использовать .save
для JPA, потому что мой проект работает на JAVA 7.
Как я могу решить эту проблему?