0在休眠IndexColumn注解值映射到基地= 1

我们使用Hibernate的注解3.4.0GA和Hibernate核心3.3.2.GA(也称为当前稳定版本)对Oracle数据库

我们有一个一对多的映射与碱= 1这对于一个loooong时工作得很好,但在上周,我们发现在索引列包含0值造成的各种问题的数据库中的一些条目。

所以我的问题是:是否有人知道一种方式来获得的值为0到一个一对多的关系索引列,当它被映射用碱= 1? 可能与使用泛型或MappedSuperclass。

请注意,代码是相当复杂的,因为继承参与其中。

以下是有关件类组成:

// 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; }

实际的课程从这些继承的类型参数提供具体的类。 它们被映射为实体。 它们还指定标识和版本柱以及吨的其他属性和引用,但没有相关的映射在手。

--------------解决方案-------------

我知道这是近两年,但我偶然发现了这一点的同时寻找同样的问题的解决方案。 我们是通过XML文件使用HBM所以我不能肯定这是否会有所帮助。 在我们的情况下,问题是反向映射。 如果在列表(和索引)的控制是在列表元件侧(以下简称“多”),像你的情况,我们有这个问题。 移动它解决了这一点。 不知道这是如何与注解完成。

另一位消息人士的错误可能是,如果你acctually设置你的AbstractReihung对象的“元素”。 Hibernate使用了延迟加载的属性代理对象。 如果设置;修改了现有的一个全新的集合,而不是你覆盖的代理对象。

分类:java的 时间:2015-03-15 人气:1
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.569 (s). 10 q(s)