Galera, estou fazendo um programa simples que é o de uma loja que possui produtos (relacionamento entre lojas e produtos, onde há um relacionamento bidirecional). A meu vê fiz o código todo certo, pelo menos eu não encontrei erro algum. Usei até o modo debug e não achei aonde estaria o problema.
Segue os fontes:
classe Loja:
import java.util.ArrayList;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class Loja {
@Id
String nome;
@OneToMany(mappedBy="loja", cascade = CascadeType.ALL)
List<Produto> produtos = new ArrayList<Produto>();
public Loja() {
}
public Loja(String nome, List<Produto>produtos) {
this.nome = nome;
this.produtos = produtos;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
}
Classe Produto:
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Produto {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String nome;
private double preco;
private int estoque;
private String descricao;
@ManyToOne
Loja loja;
public Produto() {
}
public Produto(String nome, double preco, int estoque, String descricao) {
this.nome = nome;
this.preco = preco;
this.estoque = estoque;
this.estoque = estoque;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
public int getEstoque() {
return estoque;
}
public void setEstoque(int estoque) {
this.estoque = estoque;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public Loja getLoja() {
return loja;
}
public void setLoja(Loja loja) {
this.loja = loja;
}
public String toString() {
return id + " --- " + nome + " --- " + " --- " + preco + " --- " + estoque + " --- " + descricao;
}
}
Aplicação:
import java.util.List;
import java.util.ArrayList;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
public class Aplicacao1 {
EntityManagerFactory factory;
EntityManager manager;
List<Loja> lojas = new ArrayList<Loja>();
List<Produto> produtos = new ArrayList<Produto>();
public Aplicacao1(){
factory = Persistence.createEntityManagerFactory("lojas");
manager = factory.createEntityManager();
cadastrarLojas();
manager.close();
factory.close();
}
public void cadastrarLojas() {
manager.getTransaction().begin();
produtos.add(new Produto("prod1", 1.99, 8, ""));
produtos.add(new Produto("prod2", 4.99, 9, ""));
produtos.add(new Produto("prod3", 7.99, 10, ""));
lojas.add(new Loja("loja1", produtos));
for (Produto p: produtos) {
p.setLoja(lojas.get(0));
}
manager.persist(lojas);
manager.flush();
manager.getTransaction().commit();
}
public static void main(String[] args) {
new Aplicacao1();
}
}
persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="lojas">
<provider>
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
</provider>
<!-- INSERIR AQUI TODAS AS CLASSSES PERSISTENTES -->
<class>Produto</class>
<class>Loja</class>
<!-- USANDO MYSQL -->
<properties>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="toplink.jdbc.url" value="jdbc:mysql://127.0.0.1:3306/loja" />
<property name="toplink.jdbc.user" value="root" />
<property name="toplink.jdbc.password" value="admin" />
<property name="toplink.logging.level" value="info" />
<property name="toplink.ddl-generation" value="create-tables" />
</properties>
</persistence-unit>
</persistence>
O problema quando rodo a aplicação é o seguinte:
Exception in thread “main” java.lang.IllegalArgumentException: Object: [Loja@6c585a] is not a known entity type.
É como que a entidade loja não fosse conhecida, mas acho que fiz ela certinha. Quem puder encontrar o erro, agradeceria! 
Vlw!