2011-02-11 2 views
0

JPA로 JSF 애플리케이션을 빌드하려고합니다. 지금, 우리는 로그인 기능을 만들고 싶어하지만, 우리는 우리의 글래스 피쉬 서버에서 응용 프로그램을 실행할 때 예외가있다 :javax.persistence.PersistenceException를 해결하는 방법을 알 수 없습니다.

javax.persistence.PersistenceException :

우리는 생각 siteMami

라는 이름의 EntityManager 없음 지속성 제공 문제는 persistence.xml에서 어딘가에, 어쩌면 공급자에게, 제발 우리를 도와주세요. 감사!

Here is the directory structure

의 persistence.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    version="1.0"> 

    <persistence-unit name="siteMami" transaction-type="JTA"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <class>model.Admin</class> 
     <class>model.User</class> 
     <class>model.Client</class> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.url" 
       value="jdbc:mysql://localhost/siteMami" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

User.java :

/** 
* 
*/ 
package model; 

import java.io.Serializable; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.Id; 
import javax.persistence.Inheritance; 
import javax.persistence.InheritanceType; 
import javax.persistence.Table; 
import javax.persistence.Transient; 

@Entity 
@Table(name = "useri") 
@Inheritance(strategy = InheritanceType.JOINED) 
public class User implements Serializable 
{ 
    @Transient 
    private static long serialVersionUID = 6837935606727700935L; 

    @Id 
    @GeneratedValue 
    @Column(name = "idUseri") 
    private long  id; 

    @Column(unique = true) 
    private String  username; 
    private String  password; 

    /** 
    * @param id 
    * @param userName 
    * @param password 
    */ 
    public User(long id, String username, String password) 
    { 
     super(); 
     this.id = id; 
     this.username = username; 
     this.password = password; 
    } 

    /** 
    * @return the id 
    */ 
    public long getId() 
    { 
     return id; 
    } 

    /** 
    * @return the userName 
    */ 
    public String getUsername() 
    { 
     return username; 
    } 

    /** 
    * @return the password 
    */ 
    public String getPassword() 
    { 
     return password; 
    } 

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

    public void setUsername(String userName) 
    { 
     this.username = userName; 
    } 

    public void setPassword(String password) 
    { 
     this.password = password; 
    } 
} 

UserManager.java :

package dao; 

import javax.persistence.EntityManager; 
import javax.persistence.EntityManagerFactory; 
import javax.persistence.EntityTransaction; 
import javax.persistence.Persistence; 
import javax.persistence.PersistenceContext; 
import javax.persistence.Query; 

import model.User; 

public class UserManager 
{ 
    private EntityManagerFactory factory; 

    public UserManager() 
    { 
     factory = Persistence.createEntityManagerFactory("siteMami"); 
    } 

    public User getUser(String username, String password) 
    { 
     EntityManager entityManager = factory.createEntityManager(); 

     EntityTransaction entityTransaction = entityManager.getTransaction(); 

     entityTransaction.begin(); 

     Query q = entityManager.createQuery("SELECT * FROM User WHERE User.username = '" + username + "' and User.password = '" + password + "'"); 

     entityTransaction.commit(); 

     return (User) q.getSingleResult(); 
    } 
} 
+0

Android Studio/ –

답변

4
단지

그것은 다음 디렉토리 구조입니다 터진 스크린 샷에 어떻게 든 표시됩니다. 파일의 이름은
"persistence.xml"대신 "persitence.xml"입니다.

+0

에서이 문제를 해결하는 방법 예. 부트 스트랩은 'persistence.xml'을 찾을 것입니다. 이미 발견하지 못했다면 파일의 이름을 변경하십시오. –

+0

+1 큰 잡기. –

+0

변경했지만 불행히도 문제가 지속됩니다. – DaJackal

1

내가 persistence.xml 파일 이름을 변경 한 후, 나는 src에 META-INF 사본을 만들었고 이제는 작동한다. 우리에게는 또 다른 예외가 있지만, 우리는 보게 될 것입니다. 답변 주셔서 감사합니다.