@OrderColumn, @OneToMany & null index column for collection

久未见 提交于 2019-11-30 07:06:25
Alex Gitelman

The bug refers to Hibernate 3.5.3 while documentation refers to Hibernate 3.6. It is my understanding from comments that the issue HHH-5390 has been resolved. Which version of Hibernate do you use? Note that you must have a column with exact specified name in @OrderCoulumn.

Also see this discussion about that same issue and a workaround in case of 3.5.


Update

Apparently it remains unsupported and there is a documentation bug as described by HHH-5732. I thought from HHH-5390 that the person who it was assigned (same who owns HHH-5390) has agreed to fix it. But it's not clear whether and when it is going to happen.

For me the point was to set the column declared in @OrderColumn to the NOT NULL and with default value 0

Do something like this:

@Entity
class Parent {

    @OneToMany
    @IndexColumn(name = "index_column")
    List<Child> children;
}

@Entity
class Child {

    @ManyToOne
    Parent parent;
    @Column(name = "index_column")
    Integer index;

    @PrePersist
    @PreUpdate
    private void prepareIndex() {
        if (parent != null) {
            index = parent.children.indexOf(this);
        }
    }
}
Tommy Müller

Moin,

the same problem occurs on hibernate.core 5.1.4 final. Using Set and HashSet on tag @OrderColumn (like Augustin said) fix the problem.

Maybe these can help you:

I have the same problem with an old version of hibernate (3.5.6) with tag @IndexColumn and find one good non-invasive workaround: try to change your List<Message> to Set<Message> Object and use HashSet instead of ArrayList. It's seems that old Hibernate versions work better with Sets.

Good luck!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!