foreign key attributed to wrong table when table for subclass with inheritance model is
used
--------------------------------------------------------------------------------------------
Key: HHH-3748
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3748
Project: Hibernate Core
Issue Type: Bug
Components: core
Affects Versions: 3.3.1, 3.4
Environment: Tested with 3.3.1.GA + Oracle and 3.4 (trunk) + hsqldb.
Reporter: Paul Pogonyshev
Attachments: test.diff
When a collection of inherited objects (using table per subclass with discriminator model)
is mapped, foreign key is always attributed to the base class table, not inherited class
table. This means fields in inherited class tables are _unusable_ as keys for
collections, or at least I don't see any way to use them.
This is a workaroundable issue for new databases (you could move the field to the base
table, even if this is suboptimal), but a blocker for interfacing already existing
database schemas.
I tried to create a testcase for this, attached is a diff against trunk. The test
doesn't visibly fail, because I do not know how to check which table it references.
However, you can see in ASTParserLoadingTest-output.txt:
create table DIBase (
id bigint generated by default as identity (start with 1),
type varchar(255) not null,
container bigint,
primary key (id)
)
create table DISubclass1 (
id bigint not null,
container bigint,
primary key (id)
)
I.e. field 'container' ends up in both base and derived class tables. Second is
because of the 'many-to-one'. First is because foreign key from
'children' bag is attributed to a wrong table: instead, Hibernate should reuse the
column in DISubclass1 table.
Might be related to issue 3500.
--
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....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira