Mapeamento JPA de Entidades com o Mesmo ID
Bom dia,
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".
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
Curtidas 0
Respostas
Davi Costa
14/01/2013
É possível sim, é só mapear.
att Davi
att Davi
GOSTEI 0
Danilo Gomes
14/01/2013
Cara, dá pra fazer sim, tranquilamente.
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.
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
Rafael Oliveira
14/01/2013
Cara, dá pra fazer sim, tranquilamente.
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.
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
Danilo Gomes
14/01/2013
Complicada a situação, tem que ter muito controle emocional pra esses sistemas! rs
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í?
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
Rafael Oliveira
14/01/2013
Complicada a situação, tem que ter muito controle emocional pra esses sistemas! rs
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í?
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
Rafael Oliveira
14/01/2013
É possível sim, é só mapear.
att Davi
att Davi
Você teria um exemplo desse mapeamento???
GOSTEI 0
Danilo Gomes
14/01/2013
Cara, é um pouco complicado usar o Hibernate com esse tipo de problema...
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
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
Danilo Gomes
14/01/2013
Quer dizer, não conheço o sistema, eu optaria por tentar normalizar a base, mas se é inviável, só consigo pensar em um caso de herança ou um mapeamento de duas tabelas pra uma classe... é feio, mas pode ser que ajude..rs
GOSTEI 0
Davi Costa
14/01/2013
Vc vai usar @Embeddable e @EmbeddedId
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
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
José
14/01/2013
Como a dúvida aparentemente foi sanada, estou dando o tópico por concluído.
GOSTEI 0