[jboss-user] [EJB 3.0] - Single Inheritance / ConstraintViolationException / Postgre
toni
do-not-reply at jboss.com
Thu Sep 13 06:50:03 EDT 2007
Hi,
using a single table inheritance strategy with postgres 7.3 always causes a ConstraintViolationException when I try to merge the changes.
I first create a new enity bean, which works. Then I add it to a OneToMany collection of another entity bean and try to merge the change. This is when I get a ConstraintViolationException.
Here is the setup:
| @Entity
| @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
|
| public class Person implements Serializable
| {
| @Id
| @GeneratedValue(strategy = GenerationType.IDENTITY)
| long id;
| ..
| }
|
| @Entity
| @Name("junior")
|
| public class Junior extends Person
| {
| ...
| }
|
| @Entity
| @Name("school")
|
| public class School implements Serializable
| {
| @Id
| @NotNull
| @Length(min = 5, max = 40)
| String schoolName
|
| @OneToMany(cascade = {CascadeType.ALL})
| List<Juniors> juniors = new ArrayList<Juniors>();
|
| @OneToMany(cascade = {CascadeType.ALL})
| List<Softmore> softmores = new ArrayList<Softmore>();
|
| @OneToMany(cascade = {CascadeType.ALL})
| List<Senior> seniors = new ArrayList<Senior>();
| ...
|
The following code always throws a ConstraintViolationException
| // works
| entityManager.persist(junior);
| // this causes a contraint violation
| school.getJuniors().add(junior);
| school = entityManager.merge(rewriteConfiguration);
|
The reason why this happens, is because the columns of the database table, which keeps track of the OneToMany relationships are all defined to be NOT NULL. Here comes the table:
|
| school_schoolname character varying(40)
| NOT NULL
|
| juniors_id bigint
| NOT NULL
|
| softmores_id bigint
| NOT NULL
|
| seniors_id bigint
| NOT NULL
|
|
However, all those columns SHOULD be nullable, but hibernate does not set them up like this. How can I make sure hibernate does this?
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4083864#4083864
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4083864
More information about the jboss-user
mailing list