实体:考试,成绩,学生,班级
关系:成绩与考试多对一,成绩与学生多对一,学生与班级多对一.
需求:要根据考试id和班级id查询学生成绩.
Score
@Entity
public class Score {
private int id;
private Student student;
private Exam exam;
private int score;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name = "studentid", referencedColumnName = "id")
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
@ManyToOne
@JoinColumn(name = "examid", referencedColumnName = "id")
public Exam getExam() {
return exam;
}
public void setExam(Exam exam) {
this.exam = exam;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
Student
private int id;
private Grade grade;
private String name;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@ManyToOne
@JoinColumn(name = "gradeid", referencedColumnName = "id")
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
Exam和Grade略
下面是查询代码.
ScoreDao:
@SuppressWarnings("unchecked")
public List<Score> getList(int examid, int gradeid) {
Criteria c = getSession().createCriteria(Score.class);
c.setFetchMode("exam", FetchMode.JOIN);
c.add(Restrictions.eq("exam.id", examid));
c.createAlias("student.grade", "grade");
c.add(Restrictions.eq("grade.id", gradeid));
return c.list();
}
转自:http://www.verydemo.com/demo_c146_i2502.html
分享到:
相关推荐
在JPA中,我们经常需要处理SQL查询结果,这些结果可能包含别名,例如在HQL(Hibernate Query Language)或JPQL(Java Persistence Query Language)查询中定义的别名。别名的作用是为了使查询语句更加简洁易读,并且...
在上述配置中,我们通过`hibernate.proxool.properties`指定了Proxool的配置文件路径,`hibernate.proxool.pool_alias`设置了连接池的别名,这个别名需要与Proxool配置文件中的alias一致。 接下来,我们需要创建...
16.1. 别名注射(alias injection names) 19.1. 缓存策略提供商(Cache Providers) 19.2. 各种缓存提供商对缓存并发策略的支持情况(Cache Concurrency Strategy Support) 20.1. Summary 20.2. SchemaExport...
16.1. 别名注射(alias injection names) 19.1. 缓存策略提供商(Cache Providers) 19.2. 各种缓存提供商对缓存并发策略的支持情况(Cache Concurrency Strategy Support) 20.1. Summary 20.2. SchemaExport...
16.1. 别名注射(alias injection names) 19.1. 缓存策略提供商(Cache Providers) 19.2. 各种缓存提供商对缓存并发策略的支持情况(Cache Concurrency Strategy Support) 20.1. Summary 20.2. SchemaExport...
使用 `alias` 方法为分组字段设定别名: ```java criteria.setProjection(Projections.alias(Projections.groupProperty("price"), "p")); ``` 12. 投影查询: 可以通过 `setProjection` 设定要查询的字段,...
4. `<alias>`标签:为该连接池定义一个别名,例如`<alias>mssqlProxool</alias>`,便于在应用程序中引用。 5. `<house-keeping-test-sql>`标签:这个标签定义了一个用于测试数据库连接状态的SQL语句,如`...
这里的`{cat.*}`是Hibernate的别名语法,用于指定SQL查询中的表别名,并将其与Java实体类关联。 如果查询涉及到关联加载,比如加载子实体或集合,可以使用`addJoin()`方法: ```java List<Cat> cats = sess....
这里,`pool_alias`定义了连接池的别名,`hibernate.proxool.xml`指定了Proxool配置文件的位置,`connection.provider_class`则指明使用Proxool作为连接提供者。 **(3)Proxool配置文件** 创建`ProxoolConf.xml`...
- **Criteria.createCriteria(String alias)**:用于创建子查询,alias参数用于指定关联对象的别名。 - **Criteria.addOrder(Order order)**:用于添加排序规则。 #### 三、示例解析 接下来,我们将逐一分析给定的...
16.1. 别名注射(alias injection names) 19.1. 缓存策略提供商(Cache Providers) 19.2. 各种缓存提供商对缓存并发策略的支持情况(Cache Concurrency Strategy Support) 20.1. Summary 20.2. SchemaExport...
别名和属性引用(Alias and property references) 16.1.5. 返回非受管实体(Returning non-managed entities) 16.1.6. 处理继承(Handling inheritance) 16.1.7. 参数(Parameters) 16.2. 命名SQL查询 16.2.1. 使用...
这里定义了一个别名为pool1的连接池,并指定了配置文件ProxoolConf.xml的位置。这个文件需要放在与hibernate.cfg.xml相同的目录下,内容应包括数据库驱动、URL等信息。由于Proxool自身管理连接,所以在hibernate配置...
此外,Hibernate允许我们直接使用SQL表达式,如通过`Restrictions.sql()`方法实现,但需要注意的是,`{alias}`需要替换为查询实体的列别名。 ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...
动态Criteria允许我们在运行时构建查询,通过`createCriteria(String propertyName, String alias)`方法指定别名,然后根据需要添加限制条件。这种方式在处理复杂查询时非常有用。 七、总结 Hibernate 3.0的...
<return alias="user" class="hibernate.entity.User"/> SELECT user.id AS {user.id}, user.name AS {user.name} FROM t_user user WHERE user.name = ? ``` `<sql-query>`标签中的`return`元素指定了查询结果...
在MySQL数据库操作中,"Every derived table must have its own alias"是一个常见的错误提示,它意味着在你的SQL查询语句中,所有的子查询结果(也称为派生表)都需要被赋予一个唯一的别名。这个错误通常发生在多表...
- `<alias>`:数据库别名。 - `<driver-url>`:数据库URL。 - `<driver-class>`:数据库驱动类。 - `<driver-properties>`:数据库连接参数。 - `<minimum-connection-count>`、`<maximum-connection-count>`:...
这里 `{alias}` 是被查询实体的列别名。 #### 六、结果集排序 使用 `Order` 类可以对查询结果进行排序。例如,按照名字升序,年龄降序获取数据: ```java List<Cat> cats = sess.createCriteria(Cat.class) .add...
在构建企业级Java应用时,整合Struts2、Hibernate3.2和Spring2.5是一个常见的选择,因为这三个框架分别负责MVC模式的展现层、持久层管理和业务层的依赖注入。在这个过程中,使用Proxool作为数据库连接池能够有效地...