Objetos Sendo Modificados

A minha dúvida é bem conceitual. Eu estou usando JPA para desenvolver um projeto, segue um exemplo de estrutura das classes:

[code]
public class TestA implements Serializable{
@Id
@Column(name=“id_testa”)
private Long id;

@OneToMany(fetch = FetchType.EAGER)
@JoinColumn(name = “id_testb”)
@Fetch(FetchMode.JOIN)
private Collection bs;
}

public class TestB implements Serializable{
@Id
@Column(name=“id_testb”)
private Long id;

@OneToMany
@JoinColumn(name=“id_testc”, nullable=false)
@LazyCollection(LazyCollectionOption.FALSE)
private Collection cs;
}

public class TestC implements Serializable{
@Id
@Column(name=“id_testc”)
private Long id;

@OneToOne
@JoinColumn(name=“id_testd”)
private TestD tests;
}

public class TestD implements Serializable{
@Id
@Column(name=“id_testd”)
private Long id;
}[/code]

Existe um momento que o EntityManager retorna uma lista de TestA e logo depois existe uma interação para popular os TestDs desse primeiro retorno, é exatamente nesta segunda interação que ocorre o problema.

Todos os TestDs que estão ligados ao mesmo TestC são sobrescritos pelos últimos registros, por exemplo:

registro 1: TestC{ id=53, TestD{ id=12}}

Se no final da interação houver um TestC com um TestD diferente os registros anteriores são modificados, o resultado ficaria assim:

registro 1: TestC{ id=53, TestD{ id=60}} --> o valor do TestD aqui deveria ser 12
registro 2: TestC{ id=53, TestD{ id=60}}

Implementei o equals e os hashCodes das classes mesmo assim o erro continua ocorrendo. Acredito que isso ocorra porque EntityManager entende que o TestD seja o mesmo objeto em toda a lista, existe alguma configuração para solucionar esse problema?