0

entitybeanとentitymanagerを使用してDBにレコードを作成しようとすると、この問題が発生しました。UserManagerImpl.javaに2つのメソッドがありますが、奇妙なことに、findalluserメソッドが適切に機能し、1つ作成するとJboss-7コンソールで次の例外がスローされます。コードを以下に示します。

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

MySqlでテーブルを作成するために使用したsqlステートメントは

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();
      }
}

本当に何が悪いのかわからないので、よろしくお願いします!

4

1 に答える 1

0

ID のジェネレーターを指定する必要があります。

基礎となる持続性マネージャーが休止状態の場合は、休止状態ジェネレーターを見てください。

于 2011-11-05T07:59:03.430 に答える