Ejb3 toplink jpa 1.0查询和id序列策略



我有两个问题:假设我们有一个名为class的实体和另一个名为student的实体。每个班有一个或多个学生。

public class Clas implements Serializable {
@Id
  @GeneratedValue(strategy=GenerationType.SEQUENCE)
private int id;
@OneToMany(cascade=CascadeType.ALL)
Collection<Student> students;
public clas(){
super();
}
 ..... getters and setters
}

q1:我得到的例外是没有字段要映射,因为序列策略,当添加任何其他列,如字符串名称,它的工作,但我不需要该字段我能做什么?

q2。id是自动生成的,我想查询c1班的所有学生,但我没有这个班的id,不使用id如何查询?或者如何获取数据库实体id来查询它?

我正在使用mysql服务器glassfish v2.1。

谢谢

关于你的第二个问题:当你创建一个Clas实例,保存它,并刷新,ID是自动生成的,并分配给Clas实例的ID字段。由于刷新在事务结束时自动发生,因此调用此事务性会话bean方法将返回一个ID为

的类实例。
public Clas createClas() {
    Clas c = new Clas();
    // call setters to populate the clas
    entityManager.persist(c);
    return c;
}

调用代码:

Clas c = mySessionBean.createClas();
int clasId = c.getId(); // clasId is the generated ID of the created Clas.

一旦你有了类ID,并且想要得到它所有的学生,只需做以下操作:

public Collection<Student> getStudentOfClas(int clasId) {
    Clas clas = entityManager.find(Clas.class, clasId);
    return clas.getStudents();
}

相关内容

  • 没有找到相关文章

最新更新