代码之家  ›  专栏  ›  技术社区  ›  Jens Schauder

以base=1映射的Hibernate IndexColumn中的值0

  •  5
  • Jens Schauder  · 技术社区  · 16 年前

    我们在Oracle数据库上使用HibernateAnnotations3.4.0GA和HibernateCore3.3.2.GA(也称为当前稳定版本)

    我们有一个base=1的一对多映射,它在很长一段时间内运行良好,但是上周我们在数据库中发现了一些条目,其中索引列包含值0,这导致了各种问题。

    所以我的问题是:有没有人知道一对多关系的索引列中有一个0的值,当它被一个基=1映射时?可能与泛型或mapped超类的使用有关。

    // SuperClass of the One side
    @MappedSuperclass
    public abstract class AbstractReihung<Tp, Tw, Te extends AbstractReihungElement<Tp, Tw>>
    {
      @OneToMany(cascade = CascadeType.ALL)
      @Cascade(
      {
          org.hibernate.annotations.CascadeType.ALL,
          org.hibernate.annotations.CascadeType.DELETE_ORPHAN
      })
      @JoinColumn(name = "parent_id", nullable = false)
      @IndexColumn(name = "position", base = 1, nullable = false)
      private List<Te> elements = new ArrayList<Te>();
    }
    
    // Super Class of the Many side
    @MappedSuperclass
    public abstract class AbstractReihungElement<Tp, Tw> extends AbstractDbObject
    {
      @ManyToOne
      @JoinColumn(name = "parent_id", insertable = false, updatable = false, nullable = false)
      private Tp parent;
    
      @Column(name = "position", insertable = false, updatable = false, nullable = false)
      private int position;
    }
    

    1 回复  |  直到 16 年前
        1
  •  2
  •   André Stannek    14 年前

    在我们的例子中,问题是反向映射。如果对列表(和索引)的控制是在列表元素端(“many”),就像在您的例子中一样,那么我们就遇到了问题。向上移动解决了这个问题。我不知道注解是怎么做到的。

    推荐文章