Olá pessoal estou com uma dúvida, eu espero que alguém aqui possa me esclarecer. Vou exemplificar para ficar pequeno
Bom eu tenho um banco tabelas: USUARIOS, ALUNOS.
Pois bem trazendo pra OO, especificamente JAVA + HIBERNATE.
Como que eu mapeio a herança entre a tabela USUARIOS e ALUNOS uma vez que eu tenho na tabela ALUNOS uma chave primária e uma chave estrangeira ?
Exemplo:
@Entity
@Table(name="usuarios")
@Inheritance(strategy=InheritanceType.JOINED)
public class UsuarioBean implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Column(name="id_usuario")
private Integer id;
//...get/set
}
@Entity
@Table(name="alunos")
@PrimaryKeyJoinColumn(name="id_aluno")
public class AlunoBean extends UsuarioBean implements Serializable{
private static final long serialVersionUID = 1L;
// ...get/set
}
ONDE EU COLOCO: usuario_id_usuario, como mapear isso?
Thanks
[quote=gambazinho]hehe aprovetar pra tirar uma dúvida contigo, quando a gente tem um mapeamento de herança com strategy=InheritanceType.JOINED a subclasse não pode ter id, é isso mesmo? dessa forma a subclasse só pode ser utilizada para leitura? isso ficou um pouco confuso aqui quando fiz e acabei evitando criar essa herança. vi essa informação aqui http://hibernate-by-ash.blogspot.com.br/2012/06/hibernate-exception-javalangclasscastex.html[/quote]Pode não. [=
Gostei do artigo aí. [=
[quote=Hebert Coelho][quote=gambazinho]hehe aprovetar pra tirar uma dúvida contigo, quando a gente tem um mapeamento de herança com strategy=InheritanceType.JOINED a subclasse não pode ter id, é isso mesmo? dessa forma a subclasse só pode ser utilizada para leitura? isso ficou um pouco confuso aqui quando fiz e acabei evitando criar essa herança. vi essa informação aqui http://hibernate-by-ash.blogspot.com.br/2012/06/hibernate-exception-javalangclasscastex.html[/quote]Pode não. [=
Gostei do artigo aí. [=[/quote]
mas então, Herbert. que diabos eu faço com uma entidade sem ID? kkk eu n consigo ver uma utilização bacana disso. mas talvez seja pq na minha situação, esse tipo de mapeamento não faça sentido mesmo.
aproveito aqui para dar os parabéns pelo trabalho que vem fazendo no seu blog.
[quote=gambazinho][quote=Hebert Coelho][quote=gambazinho]hehe aprovetar pra tirar uma dúvida contigo, quando a gente tem um mapeamento de herança com strategy=InheritanceType.JOINED a subclasse não pode ter id, é isso mesmo? dessa forma a subclasse só pode ser utilizada para leitura? isso ficou um pouco confuso aqui quando fiz e acabei evitando criar essa herança. vi essa informação aqui http://hibernate-by-ash.blogspot.com.br/2012/06/hibernate-exception-javalangclasscastex.html[/quote]Pode não. [=
Gostei do artigo aí. [=[/quote]
mas então, Herbert. que diabos eu faço com uma entidade sem ID? kkk eu n consigo ver uma utilização bacana disso. mas talvez seja pq na minha situação, esse tipo de mapeamento não faça sentido mesmo.
aproveito aqui para dar os parabéns pelo trabalho que vem fazendo no seu blog.[/quote]Valeu.
Não existe entidade sem ID. Tente criar uma pro c v o que acontece. [=
[quote=Hebert Coelho]
Não existe entidade sem ID. Tente criar uma pro c v o que acontece. [=[/quote]
criei e quando buscava diretamente a entidade por meio de um find(class, id) retornavam dois objetos e o hibernate cuspia erro. ou seja melou o relacionamento.
vc sabe me dizer um exemplo de mapeamento que justificaria fazer uso da strategy JOINED? pegando seu exemplo aqui http://uaihebert.com/?p=1622&page=14 te pergunto quem grava o id da tabela HUGE_DOG ? começo a pensar que ele pega os dados de ID oriundos do pai, no seu exemplo DOG, então eu teria a limitação de em banco ter o mesmo nome para a coluna de id para o pai e para o filho. correto?
[quote=gambazinho][quote=Hebert Coelho]
Não existe entidade sem ID. Tente criar uma pro c v o que acontece. [=[/quote]
criei e quando buscava diretamente a entidade por meio de um find(class, id) retornavam dois objetos e o hibernate cuspia erro. ou seja melou o relacionamento.
vc sabe me dizer um exemplo de mapeamento que justificaria fazer uso da strategy JOINED? pegando seu exemplo aqui http://uaihebert.com/?p=1622&page=14 te pergunto quem grava o id da tabela HUGE_DOG ? começo a pensar que ele pega os dados de ID oriundos do pai, no seu exemplo DOG, então eu teria a limitação de em banco ter o mesmo nome para a coluna de id para o pai e para o filho. correto?[/quote]Uma entidade não pode existir sem ID. Por isso o erro, toda entidade precisa de um campo anotado com @Id.
Sim, nesse exemplo seria amarrado, mas com esse post que você achou pode ser desamarrado. [=
Esses tipos de persistências podem variar para como o banco foi construído. Se você vai criar um do zero, você pode usar qualquer uma. Se vai aplicar o Hibernate a um banco existente aí existem vários tipos de arquiteturas diferentes. [=