[RESOLVIDO] Hibernate - Mapeamento de atributo em classe dentro de JAR

5 respostas
L

Bom dia Srs.

Possuo uma classe da seguinte forma que fica dentro de um arquivo JAR, que é dependência do meu projeto.

public class BaseClass {
	private long primaryKey;

	public long getPrimaryKey() {
		return primaryKey;
	}

	public void setPrimaryKey(long primaryKey) {
		this.primaryKey = primaryKey;
	}
	
}

No meu projeto essa classe é utilizada como “base” para outras classes como no exemplo abaixo:

@Entity
class Operacao extends BaseClass{
	
	private int nrOperacao;

	public int getNrOperacao() {
		return nrOperacao;
	}

	public void setNrOperacao(int nrOperacao) {
		this.nrOperacao = nrOperacao;
	}
	
}

Como faço para “anotar” o campo primaryKey da classe BaseClass como @Id e @GeneratedValue, sem mexer na classe que está no arquivo JAR?

Obrigado.

5 Respostas

I

Você pode tentar sobreescrever seu método getPrimaryKey() chamando o seu método da sua classe pai e mapear ele com as anotações do Hibernate

@Override
@Id
@GeneratedValue
public long getPrimaryKey() {   
      return super.getPrimaryKey();
}

Espero ter ajudado.

L

Posso colocar as anotações no método e não no atributo?

Eu ainda não tenho como testar isso, mas assim que fizer dou uma resposta.

Obrigado.

I

Pode sim, mas se anotar um método, você tem que deixar todas as anotações dessa entidade com as anotações nos métodos (getters), não pode ser em métodos e atributos.

Se resolver o seu problema, posta aqui depois.

Abraços.

I

Ah, ou você pode também anotar sua classe BaseClass como @Embeddable, mapear os campos normalmente e na sua entidade Operacao usar ela como @Embedded

Se ficou com dúvidas, dá uma olhada na documentação, é simples.
http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#d0e714

Agora depende da sua necessidade…

L

Pessoal,

Resolvi o problema como o infineight disso, colocando as anotações antes dos getters, e se você coloca em um tem que colocar em todos.

Obrigado.

Criado 31 de agosto de 2010
Ultima resposta 13 de set. de 2010
Respostas 5
Participantes 2