2011-11-05 2 views
0

entitybean과 entitybean을 통해 DB에 레코드를 만들려고 할 때이 문제가 발생했습니다. 코드가EntityManager 식별자 생성 예외입니까?

identifier generation excepton: ids for this class must be manully assigned before calling save(): gmartinc.swe645.common.entitybeans.user 

내가 사용하는 SQL 문 아래에 주어진 : 나는 UserManagerImpl.java의 두 가지 방법을 가지고, 이상한 것은 findalluser 방법은 잘 작동 하나를 만들 제이 보스-7 콘솔에서 다음과 같은 예외를 throw이다 MySql에 테이블을 만들려면

create table users(
userid varchar(100) primary key, 
firstname varchar(100), 
lastname varchar(100), 
group varchar(100), 
team varchar(100) 
); 

and the Entitybean to map this table is 

    import java.io.Serializable; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 


@Entity 
@Table(name = "users") 
public class user implements Serializable { 
    private String userid; 
    private String firstname; 
    private String lastname; 
    private String password; 
    private String team; 


    @Id 
    @Column(name="userid") 
    public String getUserId() { 
    return userid; 
    } 
    public void setUserId(String id) { 
    this.userid = id; 
    } 

    @Column(name="firstname") 
    public String getFirstName() { 
    return firstname; 
    } 
    public void setFirstName(String firstName) { 
    this.firstname = firstName; 
    } 

    @Column(name = "lastname") 
    public String getLastName() { 
    return lastname; 
    } 
    public void setLastName(String lastName) { 
    this.lastname = lastName; 
    } 

    @Column(name = "password") 
    public String getPassWord() { 
    return password; 
    } 
    public void setPassWord(String password) { 
    this.password = password; 
    } 

    @Column(name = "team") 
    public String getTeam() { 
    return team; 
    } 
    public void setTeam(String team) { 
    this.team = team; 
    } 


} 

and the UserManagerImpl.java is 
import java.util.List; 

import javax.ejb.Stateless; 
import javax.ejb.Stateful; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 
import javax.persistence.Query; 


@Stateless 
public class UserManagerImpl implements UserManagerRemote { 
    @PersistenceContext(unitName = "Swe645University") 
    private EntityManager entityManager; 

    public void createUser(user us) { 
    entityManager.persist(us); 
    } 

    public List<user> findUser() { 
     Query q = entityManager.createQuery(" from user p "); 
     return q.getResultList(); 
     } 
} 

무엇이 잘못되었는지 미리 감사드립니다.

답변

0

ID에 생성기를 지정해야합니다.

기본 지속성 관리자가 최대 절전 모드 인 경우 최대 절전 모드 생성기를 살펴보십시오.

+0

하지만 @Generator를 추가하면 시간 초과가 발생하여 내 테이블이 시퀀스 테이블이되어야한다는 뜻입니까? 그렇다면 시퀀스 테이블을 만드는 올바른 구문은 무엇입니까? – user899628