Bom dia,
Estou estudando JPA com eclipselink e, para testar estou usando essas classes:
@Entity
@NamedQuery(name = Item.LISTAR_TODOS, query="select i from Item i")
public class Item {
public static final String LISTAR_TODOS = "Item.findAll";
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int codigo;
private String nome;
private double preco;
//Construtores, Getters e Setters
}
public class ItemDAO implements DAO<Item> {
@Override
public void insert(Item obj) {
EntityManager em = ConnectionFactory.getEntityManager();
EntityTransaction tx = em.getTransaction();
tx.begin();
em.persist(obj);
tx.commit();
em.close();
}
@Override
public List<Item> list() {
EntityManager em = ConnectionFactory.getEntityManager();
TypedQuery<Item> query = (TypedQuery<Item>) em.createNamedQuery(Item.LISTAR_TODOS);
List<Item> itens = query.getResultList();
em.close();
return itens;
}
}
public class TesteInsercaoItem {
public static void main(String[] args) {
Item item = new Item();
item.setNome("Item de teste 1");
item.setPreco(1.0);
ItemDAO dao = new ItemDAO();
dao.insert(item);
List<Item> itens = dao.list();
for (Item i : itens) {
System.out.println(i);
}
}
}
Se eu rodar esse teste mais uma vez, ele só aparece o último registro inserido. Mesmo olhando no console do mysql, só aparece um registro gravado. Já tentei até criar outro objeto Item e persistir. Ainda só é mostrado um objeto na lista.
Item [codigo=1, nome=Item de teste 1, preco=1.0]
Vocês sabem dizer no que eu estou errando?
Obrigado pela ajuda.

