Gostaria de algum exemplo de mapeamento de entidade, de uma entidade que não possui ID.
estou fazendo mapeamento por xml
obrigada
Gostaria de algum exemplo de mapeamento de entidade, de uma entidade que não possui ID.
estou fazendo mapeamento por xml
obrigada
O hibernate (especificamente na versao 3.2.4 , nao sei nas outras ) lança excessão se nao tiver ID.
o hibernate admite que cada entidade terá automaticamente seu ID.
lembrando que é um “erro” uma entidade nao ter uma chave primária…
[quote=ps.vale]Gostaria de algum exemplo de mapeamento de entidade, de uma entidade que não possui ID.
estou fazendo mapeamento por xml
obrigada[/quote]
ate onde estudei nunca vi uma entidade sem ID e até acho algo meio sem sentido em uma tabela existirem tuplas que não podem ser idenficadas unicamente. :shock:
Mas se vc esplicar melhor o seu problema podemos sugerir algo…
Não tem com mapear uma entidade sem ID, o ID é o que difere cada registro de uma tabela, mesmo que sua tabela so vá ter um registro(não sei se é seu caso) tem que ter o ID.
No meu caso, tenho uma tabela pessoa, e tem seu histórico, o histórico não precisa necessariamente de um id, pq ele precisa apenas do Id da pessoa para saber de quem é o histórico.
Mesmo usando uma foreign key de outra tabela, não posso deixar a entidade sem id?
Muito obrigada pelas respostas, vou repensar no diagrama, porque não fui eu quem fez, apenas estou seguindo o modelo exigido pela empresa, vou repensar mesmo assim, obrigadaa de verdade.
eu tmb acho sem sentido a sua classe n ter ID, assim como disse o Carlos_ds_jar eu nunca vi tabela sem ID, o fato de vc apenas preciar saer a quem pertence o historico não justifica o fato de ter q existir um identificar na tabela de historico
Faz um relacionamento onde se define como ID na tabela historico o mesmo ID da classe cliente, seria um relacionamento 1x1, pelo que eu intendi todo cliente tem um registro na tabela historico, se for isso mesmo faz o que eu te disse o ID da tabela historico é o mesmo ID da tabela cliente ai resolve seu problema!
nesse caso o tabela historico teria sim uma chave primaria, mas ela tb seria ao mesmo tempo uma chave estrageira assossiada à tabela pessoa, o mapeamento com xml (resumido) pra isso ficaria assim:
// Pessoa.hbm.xml
<class name="Pessoa">
<id name="id">
<generator class="increment" />
</id>
...
<one-to-one name="historico" class="Historico" cascade="save-update" />
...
</class>
// Historico.hbm.xml
<class name="Historico">
<id name="id">
<generator class="foreign">
<param name="property">pessoa</param>
</generator>
</id>
...
</class>
tenho pouca experência com anotações, e do jeito q eu pensei ñ sei se seria o certo pois a aprte do generator e do param me confundiu se alguem puder ajudar nessa parte até eu agradeceria
flw, t+
Você não poderia trocar isso por embedded (aka, components)?
[quote=ps.vale]No meu caso, tenho uma tabela pessoa, e tem seu histórico, o histórico não precisa necessariamente de um id, pq ele precisa apenas do Id da pessoa para saber de quem é o histórico.
Mesmo usando uma foreign key de outra tabela, não posso deixar a entidade sem id?
Muito obrigada pelas respostas, vou repensar no diagrama, porque não fui eu quem fez, apenas estou seguindo o modelo exigido pela empresa, vou repensar mesmo assim, obrigadaa de verdade.[/quote]
O id da tabela histórico deveria ser o id da pessoa + data ou algo que diferencie as entradas no histórico (status, situação ou algo do tipo).
Somente o id da pessoa não pode, pois provavelmente uma pessoa pode ter vários históricos.

[quote=ps.vale]No meu caso, tenho uma tabela pessoa, e tem seu histórico, o histórico não precisa necessariamente de um id, pq ele precisa apenas do Id da pessoa para saber de quem é o histórico.
Mesmo usando uma foreign key de outra tabela, não posso deixar a entidade sem id?
Muito obrigada pelas respostas, vou repensar no diagrama, porque não fui eu quem fez, apenas estou seguindo o modelo exigido pela empresa, vou repensar mesmo assim, obrigadaa de verdade.[/quote]
Esse historico é dependente de pessoa? Ele só existe se houver uma pessoa pra ele?
Usa um auto increment no ID e ta morto heheheh
Essa solução é pra resolver de qualquer maneira… kkkkkk
pelo q entendi na postagem da ps.vale, cada pessoa possui apenas um histórico, e um histórico só existiria se existisse uma pessoa para assossiar, por isso postei aquele mapeamento, agora se ñ foi isso seria mesmo interessante a ps.vale esclarecer pq realmente faz diferença no mapeamento das entidades
t+
[quote=quikkoo]pelo q entendi na postagem da ps.vale, cada pessoa possui apenas um histórico, e um histórico só existiria se existisse uma pessoa para assossiar, por isso postei aquele mapeamento, agora se ñ foi isso seria mesmo interessante a ps.vale esclarecer pq realmente faz diferença no mapeamento das entidades
t+[/quote]
Pra falar a verdade eu entendi isso tambem, mas o ideal é sempre a gente confirmar direitinho 8)
Na verdade usar o auto_increment ajuda a criar o ID da tabela de forma mais facil, o que acredito que seja o caso dela é que uma pessoa pode ter varios registros no histórico, então usar o id da entidade pessoa não se torna valido, lembrando que seu ID deve ser único, se não o hibernate vai se perder todo.