Ejb3 toplink jpa 1.0查询和排序



我有两个问题:假设我们有一个名为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,如何查询?

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

谢谢

学生类必须有一个名为'classID'(或其他)的属性来引用

类的id属性。应该像@ManyToOne那样注释。

如果IDE已经完成了,那么检查id生成策略。例如,如果你正在使用mysql,主键是auto_increment,那么将id的策略设置为

GenerationType。AUTO和重新编译。如果出现其他错误,请告诉我。:)。

ok。我想我明白你的问题了。您可以使用依赖于您的库(在您的情况下是topplink)的查询语言编写的NamedQueries,如EJB QL或HBQL。您可以创建会话bean用于查询。

public class ClassSessionBean {
    @PersistenceContext(unitName="your PU name in persistence . xml")
    private Entitymanager em;
    publicClas selectByID(int id) throws NoResultException {
        Query q = em.createQuery("select class from Class class where class.id=?");
        q.setParameter(1, id);
        Clas clas = q.getResultList();
        return clas;
    }
} 

请注意,上面的代码可能包含语法错误,因为我没有在任何地方检查它。

希望你能从中得到一些帮助。

相关内容

  • 没有找到相关文章

最新更新