我有一个简单的Web应用程序,用于检查列的状态,它可以是Active(值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,以便能够禁用编辑。问题是它似乎没有更新表中的任何内容,没有任何变化,我也不知道为什么。运行调试并确实传递了正确的ID,但它不会更改/更新状态列。
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)
并没有帮助,并且会产生更多错误。此外,由于我的项目在JAVA 7上运行,因此我无法对JPA使用.save
。
有人知道如何解决吗?