Fórum Mapeamento JPA de Entidades com o Mesmo ID #432424
14/01/2013
0
Gostaria de saber se existe a possibilidade de fazer um relacionamento entre entidades que compartilham o mesmo id????
Ex: Tenho uma entidade chamada "Manifestacao" que tem como chave "numeroManifestacao" e tenho outra chamada "Manifestante" que usa a chave da "Manifestacao" como chave primária. Então, as duas entidades tem como pk o "numeroManifestacao".
Rafael Oliveira
Curtir tópico
+ 0Posts
14/01/2013
Davi Costa
att Davi
Gostei + 0
14/01/2013
Danilo Gomes
Mas faz sentido manifestante ter como chave primária (e não parte) a mesma chave da manifestação?
Não conheço teu caso, a regra de negócio em si, mas me parece mais natural que manifestação tenha uma lista de manifestantes, e numeroManifestação seja chave estrangeira em manifestante.
Gostei + 0
14/01/2013
Rafael Oliveira
Mas faz sentido manifestante ter como chave primária (e não parte) a mesma chave da manifestação?
Não conheço teu caso, a regra de negócio em si, mas me parece mais natural que manifestação tenha uma lista de manifestantes, e numeroManifestação seja chave estrangeira em manifestante.
É um sistema que foi feito em Struts com persistência JDBC. Estamos reecrevendo usando o JBoss Seam.
Eu estou tentando entender qual era a intenção desse maluco quando pensou nessa modelagem(os envolvido não fazem mais parte do projeto). Na verdade o relacionamento é @OneToOne.... era para o Manifestante ter uma chave composta com a chave do manifestante mais chave da manifestação... mas não sei qual foi a necessidade de se modelar dessa forma.
Mas como eu faria com as anotações para compartilhar essa chave. Pra eu gravar a Manifestação e quando for gravar o Manifestante, ele pegar a mesma chave.
Agradeço pela ajuda.
@Name("manifestacao")
@Entity
@Table(name = "", schema = "")
public class Manifestacao implements java.io.Serializable
{
private long numeroManifestacao;
@Entity
@Table(name = "", schema = "")
public class Manifestante implements java.io.Serializable
{
private long numeroManifestacao;
Gostei + 0
15/01/2013
Danilo Gomes
O cara quer que só haja um manifestante por manifestação e vice-versa, né?
Cara, tive uma XP com esse tipo de situação, o sistema era à base de Stripes e Ibatis.
Quando reescrevemos, para utilizar o Hibernate, tivemos que fazer scripts para normalizar a base.
Foi um trabalho árduo, mas que simplificou muito o uso do Hibernate.
Na verdade, matamos dois coelhos, o primeiro foi simplificar o desenvolvimento, o segundo foi acabar com uma série de inconsistências que ocorriam devido à modelagem feita inicialmente.
Acha que é inviável esse tipo de trabalho aí?
Gostei + 0
15/01/2013
Rafael Oliveira
O cara quer que só haja um manifestante por manifestação e vice-versa, né?
Cara, tive uma XP com esse tipo de situação, o sistema era à base de Stripes e Ibatis.
Quando reescrevemos, para utilizar o Hibernate, tivemos que fazer scripts para normalizar a base.
Foi um trabalho árduo, mas que simplificou muito o uso do Hibernate.
Na verdade, matamos dois coelhos, o primeiro foi simplificar o desenvolvimento, o segundo foi acabar com uma série de inconsistências que ocorriam devido à modelagem feita inicialmente.
Acha que é inviável esse tipo de trabalho aí?
É isso mesmo, uma manifestação por manifestante e vice-versa!!!!
O Pior que é impossível mexer na base por conta do legado e outros problemas com a equipe de AD.
Existe alguma solução com anotação que atenda esse problema??? Sabe como posso fazer???
Gostei + 0
15/01/2013
Rafael Oliveira
att Davi
Você teria um exemplo desse mapeamento???
Gostei + 0
15/01/2013
Danilo Gomes
Não sei te ajuda, teria que testar, mas tente usar isso:
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e2235
Gostei + 0
15/01/2013
Danilo Gomes
Gostei + 0
22/01/2013
Davi Costa
Na classe que tiver o @Embeddable vc coloca sua chave composta com o relacionamento OneToOne e a mais o id da própria tabela como vc citou
E na tabela em si ao invés de @Id vc usará o @EmbeddedId
Pesquisa pelo assunto vc vai resolver em dois tempos
att Davi
Gostei + 0
27/07/2013
José
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)