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.
/**
* @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 {...}
/**
* @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 {...}
/**
* @since 18/07/2004
* @version 0.1
*
* @hibernate.subclass discriminator-value="A"
* proxy="br.ufpe.scacin.model.Administrator"
*/
public class Administrator extends User {...}
Post pertinente no forum do Hibernate:
http://forum.hibernate.org/viewtopic.php?t=931004
valeuz...