java-如何使用休眠更新列中的值?

时间:2019-02-14 02:16:58

标签: java hibernate

我有一个简单的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

有人知道如何解决吗?

0 个答案:

没有答案