[hibernate-issues] [Hibernate-JIRA] Commented: (ANN-632) @IndexColumn doesn't set value of index column

Rich Eggert (JIRA) noreply at atlassian.com
Wed Jul 25 15:43:52 EDT 2007


    [ http://opensource.atlassian.com/projects/hibernate/browse/ANN-632?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_27615 ] 

Rich Eggert commented on ANN-632:
---------------------------------

I agree that the existing documentation is not at all clear as to how to do this.  I ran into when I set nullable=false and my database started throwing null value constraint exceptions.

Let me see if I'm understanding this correctly...

In the generic case (Parent-Child example), in order to get true List behavior from the collection, my code needs to look something like this:

@Entity
class Parent
{
    @OneToMany 
    @org.hibernate.annotations.IndexColumn(name="child_index", nullable=false, base=0)
    @JoinColumn(name="parent_id", nullable=false) 
    private List<Child> children;

    ...
}



@Entity
class Child
{
    @ManyToOne(optional=false)
    @JoinColumn(name="parent_id", insertable=false, updatable=false, nullable=false)
    private Parent parent;
 
    ...
}


Does this look correct?

By the way, I beat you to the Parent-Parent typo. ;-)

> @IndexColumn doesn't set value of index column
> ----------------------------------------------
>
>                 Key: ANN-632
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/ANN-632
>             Project: Hibernate Annotations
>          Issue Type: Improvement
>          Components: documentation
>    Affects Versions: 3.3.0.ga
>            Reporter: Dan Allen
>            Assignee: Diego Pires Plentz
>            Priority: Minor
>
> I'm sure I will get screamed at for this, but the @IndexColumn just doesn't work with @OneToMany.  When I say it doesn't work, it means that I am a reasonable person and I have studied the documentation for at least 4 hours and I just cannot figure out how to make it work.  So either the documentation needs to be improved, or there is something wrong with Hibernate. I refuse to believe that I am this stupid.
> Here is my problem in a nutshell.  I have a Person and a collection of Jobs. The Jobs should be an indexed list based on the history that the person holds them.
> @Entity
> public class Person {
>     @Id @GeneratedValue
>     private long id;
>     @Column
>     private String name;
>     @OneToMany(cascade=ALL, fetch=LAZY, mappedBy = "job")
>     @IndexColumn(base = 1, name = "order")
>     private List<Job> jobs = new ArrayList<Job>();
>    // getters and setters
> }
> @Entity
> public class Job {
>     @Id @GeneratedValue
>     private long id;
>     @Column
>     private String name;
>     @ManyToOne
>     @JoinColumn(name="person_id")
>     private Person person;
>     @Column
>     private Integer order;
>    // getters and setters
> }
> If I do the following, I get NULL for order.
> Person person = new Person();
> person.setName("Chuck")
> Job job1 = new Job();
> job1.setName("sysadmin")
> job1.setPerson(person);
> person.getJobs().add(job1);
> Job job2 = new Job();
> jobs2.setName("network admin")
> job2.setPerson(person);
> person.getJobs().add(job2);
> entityManager.persist(person);
> Assume that the reason I am not assigning an order is more complex than this example. The point is that we want to see the order column populated with the index of the list.
> Now, if you give me the business about removing mappedBy, to that I will respond that by removing mappedBy, Hibernate tries to work with a person_job table, which I don't want. I want two tables, one for person and one for job.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the hibernate-issues mailing list