alguem sabe fazer esse mapeamento em annotation
persontetegalvao,
Caso eu não esteja enganado me parece ser o seguinte:
@Entity
public class Person {
@Id
@GeneretedValue
@Column(name="id_person")
private int id;
@Column(name="person")
private String person;
}
Caso não seja isso, poste as suas classes que fica mais fácil entender.
Espero ter ajudado.
vlw ai vai a classe toda
Classe Endereço
…
pessoa
Classe Pessoa
…
…
Esses são os principais campos do mapeamento. O que eu queria era que ao salvar um pessoa com enderço ele salvasse o endereço com o mesmo id da pessoa, sem precisar mandar salvar o endereço explicitamente. Vlw pela ajuda
tetegalvao,
Eu vou colocar pra você o código de 2 classes, que tem alguns mapeamentos básicos, para você dar uma olhada.
Após ver o exemplo, tente fazer o seu, e caso surjam mais dúvidas poste aqui.
@Entity(name="Shinigami")
@Table(name="tb_brian_shinigami")
@SequenceGenerator(name = "seq_shinigami", sequenceName = "seq_shinigami")
public class Shinigami {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_shinigami")
@Column(name="id_shinigami")
private int id;
@Column(name="txt_nome")
private String nome;
@OneToMany
@JoinTable(
name="tb_brian_shinigami_emails",
joinColumns={@JoinColumn(name="id_shinigami")}
)
private Set<String> emails = new HashSet();
// getters and setters
}
@Entity(name="Evento")
@Table(name="tb_brian_evento")
@SequenceGenerator(name = "seq_evento", sequenceName = "seq_evento")
public class Evento {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_evento")
@Column(name="id_evento")
private int id;
@Column(name="txt_titulo")
private String titulo;
@Column(name="dat_data")
private Date data;
@ManyToMany(targetEntity=hiberapp0.Shinigami.class, cascade={CascadeType.PERSIST, CascadeType.MERGE})
@JoinTable(
name="tb_brian_evento_shinigami",
joinColumns={@JoinColumn(name="id_shinigami", table="tb_brian_shinigami")},
inverseJoinColumns = @JoinColumn( name="id_evento")
)
private Set shinigami = new HashSet();
// getters and setters
}
Quando ao salvar os objetos não é no mapeamento.
Eu vou colar um método de uma classe DAO
public void addEmailToShinigami(int codigoShinigami, String emailShinigami){
Session session = factory.openSession();
Shinigami umShinigami = (Shinigami) session.load(Shinigami.class, codigoShinigami);
// The getEmailAddresses() might trigger a lazy load of the collection
umShinigami.getEmails().add(emailShinigami);
session.flush();
session.close();
this.commit();
}
De também uma olhada neste link, que é o Guia de Referencia do Hibernate Annotations:
http://www.hibernate.org/hib_docs/annotations/reference/en/pdf/hibernate_annotations.pdf
Boa sorte.
vlw cara!!! Ajudou muito!!! :lol:
[quote=fsquadro]tetegalvao,
Eu vou colocar pra você o código de 2 classes, que tem alguns mapeamentos básicos, para você dar uma olhada.
@OneToMany
@JoinTable(
name="tb_brian_shinigami_emails",
joinColumns={@JoinColumn(name="id_shinigami")}
)
private Set<String> emails = new HashSet();
// getters and setters
}
[/quote]
Oi fsquadro vc já me mandou esse exemplo dos Shiginami(Que aliás oque é um?^^)
mais eu não consigo fazer um @OneToMany pra Strings
@OneToMany
@JoinTable(
name="tb_cotacoes_medidas",
joinColumns={@JoinColumn(name="id_cotacao")}
)
private Set<String> Medidas = new HashSet<String>();
Erro:
Exception in thread "main" org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: cotaçao.Cotacao.Medidas[java.lang.String]
at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1033)
at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:576)
at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:517)
at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:316)
at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:756)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:93)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:61)
at Hibernate.GeraTabelas.main(GeraTabelas.java:14)
[quote=tetegalvao]alguem sabe fazer esse mapeamento em annotation
person [/quote]@GenericGenerator(name="gerador", strategy="foreign", parameters={@Parameter(value= "person", name="property")} )
@Id
@GeneratedValue(generator="gerador")
@Column(name = "person_id", unique = true, nullable = false)
public Long getId()...
[quote=maschiojv][quote=tetegalvao]alguem sabe fazer esse mapeamento em annotation
person [/quote][code]
@GenericGenerator(name=“gerador”, strategy=“foreign”, parameters={@Parameter(value= “person”, name=“property”)} )
@Id
@GeneratedValue(generator=“gerador”)
@Column(name = “person_id”, unique = true, nullable = false)
public Long getId()…
[/code][/quote]
Só 2 anos atrazados xD
hehe, eu precurei e achei esse tópico, era exatamente o que eu queria mas não tinha a solução, dai eu coloquei
maschiojv, antes tarde do que nunca certo? hehe
Estou precisando fazer exatamente isso, mas aqui nao está funcionando, poderia postar o restante do seu mapeamento com annotations?
O mapeamento de endereço em pessoa. Existe um atributo pessoa em Endereço?
Muito obrigado
Consegui fazer a relação da seguinte forma:
@Entity
@Table(name="pessoa")
public class Pessoa {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;
@OneToOne
@PrimaryKeyJoinColumn
@Cascade(value=CascadeType.ALL)
private Endereco endereco;
...
}
@Entity
@Table(name="endereco")
public class Endereco {
@GenericGenerator(
name = "gerador",
strategy = "foreign",
parameters = @Parameter(name = "property", value = "pessoa")
)
@Id
@GeneratedValue(generator = "gerador")
@Column(name = "pessoa_id")
private Integer id;
...
}
Acredito que foi uma solução parecida com a sua…
O único detalhe é que gerando o banco com o hibernate ele nao gerou a FK entre pessoa e endereço, alguém sabe como fazer com que ele gere isso também?