我有两个问题:假设我们有一个名为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();
}