ejb3 toplink jpa 1.0查询和排序
问题描述:
我有两个问题: 假设我们有一个名为class的实体,另一个名为student。每班都有热衷学生的学生。ejb3 toplink jpa 1.0查询和排序
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: ids是自动生成的,我想查询c1类中的所有学生,但是我没有这个类的id,该怎么做这样的查询?
与MySQL服务器的GlassFish v2.1的IAM工作的TopLink JPA 1.0
感谢
答
学生类必须有一个属性命名 '的classID'(或其他)是指
柯乐的id属性。这应该注释为@ManyToOne。
如果已经由IDE完成了,那么请检查id生成策略。例如,如果您使用的是mysql,则主键为auto_increment,然后将th id的策略设置为
GenerationType.AUTO并重新编译。告诉我是否有其他错误出现。 :)。
答
好的。我想我理解你的问题。您可以使用查询语言中编写的NamedQueries,这取决于您的库(在您的案例toplink中),如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;
}
}
请注意,上述代码可能包含语法错误,因为我没有在任何地方检查过它。
希望你从这里找到一些帮助:)。
看我有表正确解决,我坚持数据到它和关联表工作正常,问题是我将如何查询这些数据就像使用类ID类1我需要让这个类的所有学生1 ??? getallstudents(Class c1)方法>从学生的类c1中选择s,其中c1.ID =:ID就像这样? – Tommy 2011-12-26 11:35:00