[hibernate-issues] [Hibernate-JIRA] Created: (HHH-6905) Getting invalid ID on cascade (using @DiscriminatorColumn)

Rogério Lino (JIRA) noreply at atlassian.com
Fri Dec 16 13:56:21 EST 2011


Getting invalid ID on cascade (using @DiscriminatorColumn)
----------------------------------------------------------

                 Key: HHH-6905
                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-6905
             Project: Hibernate Core
          Issue Type: Bug
          Components: core
    Affects Versions: 4.0.0.CR4
         Environment: JPA 2 / Hibernate 4.0.0.CR4, Postgres 9, Linux (Ubuntu 11.10)
            Reporter: Rogério Lino
            Priority: Minor


When try to persist a entity with a list (@OneToMany), the id returned to save in cascade is the value of discriminator column (int).

Ex:

@Entity
@Table(name = "person")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.INTEGER)
class Person extends MappedSuperClassWithId {

}

----

@Entity
@DiscriminatorValue("9999")
class Employee extends Person {

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "employee")
    private List<Phone> phones;

}

----

Employee employee = new Employee();
// employee setters
Phone phone = new Phone();
// employee setters
employee.getPhones().add(phone);

entityManager.persist(employee);
// throw org.hibernate.exception.ConstraintViolationException
// ERROR: insert or update on table "phone" violates foreign key constraint "..." 
// Detail: Key (id_employee)=(9999) is not present in table "person".

----

The column order in the table person (generated by hibernate.hbm2ddl.auto) is "type" and "id". When I change to "id" and "type", works fine.


For some reason Hibernate is getting as last id the value of first table column.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the hibernate-issues mailing list