代码之家  ›  专栏  ›  技术社区  ›  Brandon Yarbrough

将生成的值插入到Hibernate记录中

  •  1
  • Brandon Yarbrough  · 技术社区  · 17 年前

    我正在用Hibernate创建Widget的记录。这是相当基本的。我有一个描述对象的hbm.xml文件,一个创建和保存它们的DAO类,等等。

    然而,小部件有一个明确的排序顺序,每个新的小部件都需要插入一个 sortIndex 列值大于所有其他值 列值(即新小部件自动排在最后)。我无论如何都想不出如何做到这一点。

    1 回复  |  直到 17 年前
        1
  •  1
  •   waxwing    17 年前

    我不想这么说,但我认为你最好用编程的方式来做这件事。只是以下几句话:

    public void saveNewWidget(Widget widget) {
        Session session = ...;
        int sortIndex = ((Integer) session.createQuery("select max(w.sortIndex) from Widget w").uniqueResult()) + 1;
        widget.setSortIndex(sortIndex);
        session.save(widget);
    }
    

    (注意:不是线程安全的。除了锁上整个桌子,我看不出有什么好方法可以保证它的安全。我会责怪疲劳。)

    原因是它似乎既不 UserType 也不是习俗 Interceptor 可以在这里帮助你。所以,如果你 真的 如果你想自己做这件事,你可能需要自己写 ClassPersister 这就是通往疯狂的道路。