Atualização das chaves removidas no Hibernate

Fala galerinha…

O que eu to fazendo é o seguinte:

No meu sistema tem um cadastro de mapas(localidade onde fica um equipamento) e dentro desse mapa são cadastrados equipamentos… 1 ou mais…
Esses equipamentos possuem alguma opções a serem selecionadas no momento do cadastro, ou mesmo em uma edição posterior.

O meu problema está sendo o seguinte, quando eu cadastro, por exemplo, 3 equipamentos, os mesmos me gerariam 6 opções cadastradas. As chaves dessas opcoes seriam 1,2,3,4,5,6. Quando eu deleto o equipamento 2, as chaves 3 e 4 são apagadas, permanecendo 1,2,5,6 no bd… até aí tudo bem.
Eu exporto esses dados para um XML(para uma mudança de bd ou backup) e ele exporta corretamente, somente as chaves 1,2,5,6. Porém quando eu deleto meu banco e vou importar esses dados do XML a chave fica da seguinte maneira: 1,2,3,4… ou seja… ele atualiza as chaves de maneira sequencial e quando o hibernate procura pela chave 5 ele me gera e seguinte exception:

Alguém tem uma idéia de como resolver isso?..

Segue minhas class:

Equipamento.java

[code]@Entity
public class Equipamento extends Elemento {



@OneToMany(targetEntity = OpcaoEquipamento.class)
@Cascade( { CascadeType.ALL, CascadeType.DELETE_ORPHAN })
@LazyCollection(value = LazyCollectionOption.FALSE)
public Set<OpcaoEquipamento> getOpcoes() {
return opcoes;
}

public void setOpcoes(Set&lt;OpcaoEquipamento&gt; opcao) {
	this.opcoes = opcao;
}



…[/code]

OpcaoEquipamento.java

@Entity public class OpcaoEquipamento extends CiaEntity { ... ... ... @Id @GeneratedValue(generator = "sequence") @GenericGenerator(name = "sequence", strategy = "increment") public Long getId() { return super.getId(); } ... ... ...

Equipamento_OpcaoEquipamento.java

@Entity public class Equipamento_OpcaoEquipamento extends CiaEntity { ... ... ... @Id private long opcoes_id; private long equipamento_id; ... ... ...

Acho que é isso…

To quebrando a cabeça com isso… =S

[]'s

E por que o Hibernate continua a procurar pela pk com valor 5?

Ao deletar tudo do banco você reseta também as sequences?

[quote=Filipe Sabella]E porquê o Hibernate continua a procurar pela pk com valor 5?

Ao deletar tudo do banco você reseta também as sequences?[/quote]

Fala Filipe…

Essa é a classe q tah procurando o ID = 5…

[code]@Entity
public class Equipamento_OpcaoEquipamento extends CiaEntity {

@Id
private long opcoes_id;
private long equipamento_id;

public Equipamento_OpcaoEquipamento() {
	// TODO Auto-generated constructor stub
}

public long getEquipamento_id() {
	return equipamento_id;
}

public void setEquipamento_id(long equipamento_id) {
	this.equipamento_id = equipamento_id;
}

public long getOpcoes_id() {
	return opcoes_id;
}

public void setOpcoes_id(long opcoes_id) {
	this.opcoes_id = opcoes_id;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result
			+ (int) (equipamento_id ^ (equipamento_id >>> 32));
	result = prime * result + (int) (opcoes_id ^ (opcoes_id >>> 32));
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	final Equipamento_OpcaoEquipamento other = (Equipamento_OpcaoEquipamento) obj;
	if (equipamento_id != other.equipamento_id)
		return false;
	if (opcoes_id != other.opcoes_id)
		return false;
	return true;
}

}[/code]

Quanto a sequence, não to resetando… na real nem sei como se faz isso…

[]'s

Vamos seguir a sequência?

  1. Usuário quer importar o banco do arquivo
  2. Aplicação deleta todos os registros
  3. Aplicação insere os registros a partir do arquivo
  4. Aplicação comita a transação

Até aí está certo? Se sim, de onde está saindo esse id 5?

[quote=Filipe Sabella]Vamos seguir a sequência?

  1. Usuário quer importar o banco do arquivo
  2. Aplicação deleta todos os registros
  3. Aplicação insere os registros a partir do arquivo
  4. Aplicação comita a transação

Até aí está certo? Se sim, de onde está saindo esse id 5?[/quote]

Bora…

1 - Ok
2 - Eu deleto a base e crio novamente
3 - A partir dos XML’s
4 - Pega o XML 1 comita, XML 2 comita, etc…

Eu importei os arquivos 1 por 1, e é quando eu importo Equipamento_OpcaoEquipamento que ele procura por esse ID 5…

O que eu to precisando mesmo, é que na hora de fazer o import, o hibernate não atualize as chaves das opções.
Acho que ele deveria persistir no bd com as chaves 1,2,5,6, assim não teria problemas com os outros imports.

Alguém?

[]'s