[
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4320?page=c...
]
Bruno Medeiros commented on HHH-4320:
-------------------------------------
I'm trying to do the same without success.
My code:
@Entity
@Table(name="journals")
public class Journal {
@Id
private Integer id;
@Any(metaColumn = @Column(name = "journalized_type"))
@AnyMetaDef(idType = "integer",
metaType = "string",
metaValues = {
@MetaValue(value = "Issue", targetEntity = Issue.class),
//@MetaValue(value = "Board", targetEntity = Board.class)
}
)
@JoinColumn(name="journalized_id")
private Journalized journalized;
...
@Entity
@Table(name="issues")
public class Issue implements Journalized {
@Id
private Integer id;
@OneToMany(mappedBy="journalized")
//@Where(clause="journalized_type = 'Issues'")
private List<Journal> journals;
...
The error I got is:
Exception in thread "main" org.hibernate.MappingException: Foreign key
(FKC131381C3D434C46:journals [journalized_type,journalized_id])) must have same number of
columns as the referenced primary key (issues [id])
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:113)
at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:96)
at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1310)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1217)
at
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:329)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1333)
at
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
Of course there is no way to create foreign keys, We need a @OneToAny annotation. Is there
any way to workaround that?
Bidirectional Polymorphism
--------------------------
Key: HHH-4320
URL:
http://opensource.atlassian.com/projects/hibernate/browse/HHH-4320
Project: Hibernate Core
Issue Type: New Feature
Components: annotations
Environment: 3.4.0.GA, Any database
Reporter: Yong Joo Jeong
I'm trying to implement bidirectional polymorphic class.
Code:
public class Order{
...
@Any( metaColumn = @Column( name = "item_type" ), fetch=FetchType.EAGER )
@AnyMetaDef(
idType = "long",
metaType = "string",
metaValues = {
@MetaValue( value = "ItemA", targetEntity = ItemA.class ),
@MetaValue( value = "ItemB", targetEntity = ItemB.class )
} )
@JoinColumn( name = "item_id" )
Object item;
...
}
And trying to do somthing like the following
Code:
public class ItemA {
@OneToAny // like @OneToMany; in Order table there are "item_id" and
"item_type" fields to distinguish ItemA and ItemB
List<Order> orders;
...
}
RoR support this kind of relationship, but I can't find it from Hibernate.
Inheritance with "Table per class" is not an option since it does not support
the IDENTITY generator strategy.
Any solution for this?
--
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