Dúvida de JPA Anottations em Inteface!

2 respostas
G

Tenho o seguinte código

User.java

@Entity
@Table(name = "USER")
public class User implements Serializable {

    ...

    @Embedded
    @AttributeOverride(name = "key", column = @Column(name = "PASSWORD", nullable = false))
    private Password password;

    ...

}

Password.java

public interface Password extends Serializable {
    Object getKey();
    void setKey(Object k);
}

PasswordImpl.java

@Embeddable
public class PasswordImpl implements Password {

    private Object key;

    public Object getKey() {
        return this.key;
    }

    public void setKey(Object key) {
        this.key = key.toString();
    }

    public int hashCode() {
        ...
    }

    public boolean equals(Object obj) {
        ...
    }

}

Meu problema é q parece que a annotation @Embeddable na classe PasswordImpl não está funcionando para a minha classe User no atributo password onde faço a Annotation @Embedded e @AttributeOverride onde essa ultima substitui o key pela coluna PASSWORD na tabela USER.
Alguem sabe me dizer pq qd uso o UserDao para buscar o User ele não preenche o valor do atributo password com o valor da coluna PASSWORD?

Não sei se está faltando almgua annotation, ou alguma configuração, ou colocar @Embeddable na interface, sendo q já fiz e não funcionou.
Sou verde em JPA, sei o padrão, ams esse lance de @Embeddable e @Embedded em em tributo q possui interface, complica.
Se fosse a classe PasswordImpl direto eu acho q funcionaria, pois já vi muitos exemplos e todos usam a classe q implementa direto, mas eu tenho essa interface q não tem como tirar.

Se alguem q manja bem de JPA puder me ajuda, está ai um desafio.

Valeu!!

2 Respostas

_fs

Cara, o pessoal aqui ficou curioso com o seu problema. Onde você diz para o Hibernate que ele deve usar a classe PasswordImpl? Será que não tem alguma anotação para fazer isso?

Enquanto não aparece alguém para dar a resposta, achei isso aqui:
http://www.hibernate.org/339.html

Mas parece dolorido demais hehe

G

RESOLVIDO!

Simplesmente não funciona Annotations @Embeddable e @Embedded com interface no meio.
A relação tem ser da classe @Embeddable com a classe q possui o atributo @Embedded.

Criado 4 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 2
Participantes 2