[quote=pirado18]rissato, eu não uso annotations, eskeci de enfatizar isso, eu preciso do mapeamento em xml!
Por favor, é foda estar aprendendo, a referencia que tenho são tutoriais em ingles, e ingles não é muito meu forte, ainda hehehe
Se puder ajudar fico muito agradecido, eu nao sei nem como vou salvar depois esse relacionamento.
Eu ja tentei usando bag, mas axo que bag é desperdício em se tratando de um relacionamento one-to-one. não vou precisar de uma lista, sim um objeto, e pronto, só nao sei como fazer isso, como relacionar, que campos devem ter em cada classe, digo:
na classe Produto, devo ter os getters e setters para um campo Localizacao? ou na classe Localizacao, devo der o campo para Produto? ou ambas devem ter?
E como faço pra salvar? salvo primeiro o Produto e depois Localizacao? e como façoa “linkagem” entre eles? ah, o relacionamento não eh de PK![/quote]
aconselho usar annotations… não mapeio com XML, então se interessar,
Vc tem certeza que 1 localização só pode conter 1 produto ?? se sim realmente é 1 - 1 … se não… 1 - N onde uma localização pode conter varios produtos, porem o inverso não é permitido… e ate onde percebi, é pelomenos 0…1 - 1 … onde uma localização pode ter ou não um produto…
com annotation a forma seria assim
[code]public class Produto {
@Id
@GeneretedValue //conciderando que o banco de dados tem geração de chave automatica
private int id; //conciderando que o campo id é int
private String codigo;
//aqui abaixo estou relacionando 1 - 1 (@OneToOne) com localização,
//(mappedBy = "produto") onde esse item é mapeado por Localização através do campo produto de localização,
//ou seja, é necessario que exista um localização, para exisitir um produto...
// "fetch = FetchType.LAZY" o fetch não é necessario so diz que ele so vai buscar na tabela a localizao,
// caso haja chamada do field localizao (isso ocorre pq ta setado LAZY)
// isso evita que ao carregar uma lista de produto, ele já saia fazendo os devidos select para a localizao,
// fazendo isso apenas quando há a chamada deste
// "cascade" vc pode usar CascadeType.ALL que inclui tanto Persist como Marge como Remove além do refresh
// isso vai faze com que o quando vc salve um produto, ele salve tb a localição...
// como CascadeType.REMOVE esta ai, lembre-se que quando vc apagar um produto, a localização vai pro espaço
// se não quisar isso, tire o remove...
@OneToOne(mappedBy = "produto", fetch = FetchType.LAZY, cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})
private Localizacao localizacao;
//... método getters n setters
}[/code]
[code]public class Localizacao {
@Id
Float id
String codigo
@OneToOne(fetch = FetchType.LAZY, cascade={CascadeType.PERSIST,CascadeType.MERGE,CascadeType.REMOVE})
private Produto produto;
//... método getters n setters
}[/code]
da pra fazer isso com XML tb… mas eu não sei como fazer, vc pode pesquisar, visto que agora vc ja tem os annotations correspondentes aos XML que vc quer mapear… espero ter ajudado