代码之家  ›  专栏  ›  技术社区  ›  willcodejavaforfood

我可以覆盖生成的id吗?

  •  2
  • willcodejavaforfood  · 技术社区  · 14 年前

    @Entity
    @Table(name="TERMS")
    public class Term implements Serializable {
        @Id
        @GenericGenerator(name = "generator", strategy = "guid", parameters = {})
        @GeneratedValue(generator = "generator")
        @Column(name="TERM_ID")
        private String termId;
    }
    

    但是,当我的实体有现有的IDS让Hibernate非常恼火时,做一个持久化。那么,这实际上是可能的,还是最好避免删除它们,而只是尝试合并呢?

    org.hibernate.PersistentObjectException: detached entity passed to persist: com.idbs.omics.catalog.entity.Term
    

    谢谢

    2 回复  |  直到 14 年前
        1
  •  2
  •   Community PPrice    7 年前

    我的想法是删除旧的并从传入的XML中重新创建它。但是,当我的实体有现有的IDS让Hibernate非常生气时,做一个持久化。

    实际上,您不能指定 Id 新的 但是作为 独立的 5.1.4.5. Assigned identifiers 更多提示)。

    那么,这实际上是可能的,还是最好避免删除它们,而只是尝试合并呢?

    • 不分配id~或~
    • 使用实体的特殊版本,但不使用生成的标识符~或~
    • bulk operations (?)

    独立的 实体将确实使用 merge (但是看看这些 previous questions

        2
  •  0
  •   FRotthowe    14 年前

    你可以用 EntityManager.merge

    http://blog.xebia.com/2009/03/23/jpa-implementation-patterns-saving-detached-entities/ 有关此问题的详细信息。