- sql为select a.*, b.id as childId, b.childName from a,b where a.id = b.id
当遇到Column '*' not found找不到的时候,首先检查该字段是否存在,如果存在还有这个错误,有两种解决办法
第一种:有可能是你的*字段取了别名,那么在查询的时候一定要指定改别名的类型,为已经存在的别名指定数据类型。只需要为最外层的有别名的字段指定类型即可。代码如下:
- SQLQuery query = session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER);//指定别名的数据类型//多个别名可以连续写多个如:session.createSQLQuery(sql).addScalar("别名", Hibernate.INTEGER).addScalar("别名1",Hibernate.INTEGER);
第二种:将返回结果映射到具体的类。可以是实体类,也可以是普通的pojo类。查询代码如下:
- Query query = session.createSQLQuery(sql.toString()).setResultTransformer(Transformers.aliasToBean(CheckInfo.class));//CheckInfo为pojo类
- SQLQuery sqluery = session.createSQLQuery(sql).addEntity(User.class);//User为实体类,对应数据库的某个表
如果存在返回多个实体的情况:
- session.createSQLQuery("SELECT {user.*}, {role.*} FROM user u, role r WHERE u.roleId= r.id") .addEntity("user", User.class) .addEntity("role", Role.class) {user.*}的user就是 addEntity("user", User.class)里面的user名称。
摘自:http://blog.csdn.net/huozhicheng/article/details/6320138
相关推荐
在查询时,如果实体在映射时有一个 many-to-one 的关联指向另外一个实体,必须也返回那个实体,否则会导致发生一个"column not found"的数据库错误。这些附加的字段可以使用*标注来自动返回,但我们希望还是明确指明...
例如,可以通过指定@Formula来使用原生SQL查询来覆盖某些特定的计算字段,或者使用@NotFound(action=NotFoundAction.IGNORE)来优化外键关联的性能问题。 9. **元数据提取**:Hibernate可以自动从注解中提取元数据,...
- **`not-found`**:当未找到关联实体时的行为,默认为`exception`。 - **`cascade`**:级联选项,例如`save-update`、`delete`等。 - **`inverse`**:指定该关联是否为可逆的,默认为`false`。 - **`fetch`**:加载...
检查实体类中的属性名和数据库中的列名是否匹配,包括大小写和下划线的使用。 9. **IOException while loading persisted sessions: java.io.EOFException** 在加载持久化会话时遇到输入/输出异常,可能是文件损坏...
为了将Java实体类映射到数据库表,我们需要编写Hibernate映射文件。 #### Student映射文件(Student.hbm.xml) ```xml <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" ...
5. **生成实体类**:完成上述配置后,MyEclipse会根据数据库表结构自动生成对应的Java实体类,并添加必要的JPA注解,如`@Entity`、`@Id`、`@Column`等,以实现对象与数据库表的映射。 6. **生成CRUD操作**:除了...
为了解决这个问题,我们需要检查User实体类,确保它包含`userEmail`字段,并且该字段已经使用了`@Column`注解进行标注。例如: ```java @Entity public class User { // ... @Column(name = "user_email") ...