Исключение при генерации идентификатора EntityManager? - PullRequest
0 голосов
/ 05 ноября 2011

Я столкнулся с этой проблемой, когда пытался создать запись в БД через entitybean и entitymanager. У меня есть два метода в UserManagerImpl.java, странная вещь заключается в том, что метод findalluser работает хорошо, и его создание вызывает следующее исключение в консоли Jboss-7: код указан ниже

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

Оператор sql, который я использовал для создания таблицы в 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();
      }
}

На самом деле не знаю, что случилось, и спасибо заранее!

1 Ответ

0 голосов
/ 05 ноября 2011

Вам необходимо указать генератор для вашего идентификатора.

Если ваш основной менеджер сохраняемости находится в спящем режиме, взгляните на генераторы спящего режима.

...