Java JPA - problem z połączeniem

0

Cześć. Podczas wywoływania metody helloMsg dostaję błąd (beana wrzucam do servletu). Dlaczego nie mogę się połączyć ?

@Stateless
@LocalBean
public class FirstProBean {
	
    public FirstProBean() {}
    
    private EntityManager em;
    
    
    public String helloMsg()
    {
    	Map<String, String> properties = new HashMap<String, String>();
    	properties.put("javax.persistence.jdbc.user", "postgres");
    	properties.put("javax.persistence.jdbc.password", "pswd");
    	EntityManagerFactory emf = Persistence.createEntityManagerFactory(
    		      "jdbc:postgresql://localhost:5432/db", properties);
    	
    	return "Hello from 1st bean !";
    }


}
0

W załączniku widać błąd, niestety nie wiem co jest źle skoro dodałem .jar do classpath. Dziwne, co ?

0

Poradziłem sobie z tym, ale mam inny błąd.

Bean

@Stateless
@LocalBean
public class Bean1 {
	private EntityManager em;
	private EntityManagerFactory emf;

    public Bean1() {}
    
    public void connectToDB()
    {
    	
    	emf = Persistence.createEntityManagerFactory("ORM");
    	em = emf.createEntityManager();
    	usero.Userek user = new usero.Userek();
    	user.setName("lolik");
    	user.setId(1);
    	em.getTransaction().begin();
    	em.persist(user);
    	em.getTransaction().commit();
    	em.close();
    
    }

}

Entity

@Entity
public class Userek {
	
	@Id
	private int id;
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}
}

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
	<persistence-unit name="ORM" transaction-type="RESOURCE_LOCAL">
	<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
	<class>usero.Userek</class>
		<properties>
			<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/db"/>
			<property name="javax.persistence.jdbc.user" value="postgres"/>
			<property name="javax.persistence.jdbc.password" value="pswd"/>
			<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>
		</properties>
	</persistence-unit>
</persistence>

Servlet

@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	@EJB Bean1 ejb;

    public Servlet() {
        super();

    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		PrintWriter out = response.getWriter();
		out.write("<h1>Hello world!</h1>");
		ejb.connectToDB();
		out.write("Connected");
		
	}
}

Błąd dostaje w linijce "em.persist(user);" w klasie Bean1. Raz jest to:

java.lang.IllegalArgumentException: Object: usero.Userek@13ae3d1 is not a known entity type

lub NullPointerException

1 użytkowników online, w tym zalogowanych: 0, gości: 1