Olá,
Eis que me deparei com o seguinte problema. Uso o Hibernate para ORM e agora preciso de uma hieararquia de classes que funcione assim:
[list]
People - classe na raiz da arvore de herança e se relaciona com a table SCACIN_PEOPLE;
User - classe filha de People e que, no mapeamento é uma joined-class, ou seja, uma table especifica para essa classe. No casos, SCACIN_USER;
Administrator e outras 2 classes - essas são subclasses de User e não precisam de uma table por classe.
[/list]
Então, o mapeamento das classes filhas de User deveriam ser feitas via subclass com um descriminator value para identificar cada classe na hierarquia de herança. O problema é que a DTD do Hibernate não permite que uma joined-subclass possua uma subclass ou o contrario. Mais ainda, vc não pode ter no mapeamento de uma classe, no caso People, mix entre joined-subclass e subclass. Ou seja, usa uma ou outra. Alguma ideia de como resolver isso? A unica coisa que me ocorre agora é usar composição entre People e User, mas isso implica mudançs no Modelo ER e daí, haja briga com quem fez o banco.
Details:
Hibernate Version: 2.1.4, 02. June 2004
Class headers with XDoclet Tags:
[code]
/**
- @since 18/07/2004
- @version 0.1
- @hibernate.class discriminator-value="U"
-
proxy="br.ufpe.scacin.model.People"
-
table="SCACIN_PEOPLE"
*/
public class People implements Identifiable {…}[/code]
[code]
/**
- @since 18/07/2004
- @version 0.1
- @hibernate.joined-subclass-key column="USER_ID"
- @hibernate.joined-subclass proxy="br.ufpe.scacin.model.User"
-
table="SCACIN_USER"
*/
public class User extends People {…}[/code]
[code]
/**
- @since 18/07/2004
- @version 0.1
- @hibernate.subclass discriminator-value="A"
-
proxy="br.ufpe.scacin.model.Administrator"
*/
public class Administrator extends User {…}[/code]
Obviamente, como expliquei acima, o conjunto de tags para a classe Administrator não funciona.
Post pertinente no forum do Hibernate:
http://forum.hibernate.org/viewtopic.php?t=931004
valeuz…