相关疑难解决方法(0)

如何使用Hibernate Projection检索复杂的类及其成员?

我有一个类,需要使用Hibernate从DB检索.问题是我的班级有多个成员,其中大多数是班级,我该如何检索它们?

@Entity
public class Student {
  @Id
  long id;
  String name;
  String fname;
  @OneToMany
  List<Course> courses;
  @ManyToOne
  Dealer dealer;
  ...
}

@Entity
public class Dealer {
   @Id
   long id;
   String name; 
   @OneToMany(fetch = FetchType.LAZY, mappedBy = "cr.dealer", cascade = CascadeType.ALL)
   Set<Car> cars = new HashSet<Cars>(0);
   ..

}
Run Code Online (Sandbox Code Playgroud)

我需要检索学生ID 1及其所有课程,经销商和经销商汽车列表.

我的预测如下,但它不会返回任何内容.

  ...
    .setProjection(Projections.projectionList()

    .add(Projections.property("friends.cars").as("cars")
    ...
Run Code Online (Sandbox Code Playgroud)

java sql orm hibernate hibernate-criteria

12
推荐指数
1
解决办法
621
查看次数

将hibernate投影映射到java POJO模型

过去几周我一直在使用spring和hibernate,我一直在那里学习新东西.

现在我有一个问题,我想用Hibernate中的Projections来解决.

假设有一个模型Person,该模型有很多Car.以下是类定义大致如下所示:

public class Person implements java.io.Serializable {
    private Integer id;
    private String name;
    private List<Car> cars;
    private Integer minYear; // Transient
    private Integer maxYear; // Transient
}

public class Car implements java.io.Serializable {
    private Integer id;
    private Integer year;
}
Run Code Online (Sandbox Code Playgroud)

这里的问题是我希望得到每个人的minYear(maxYear)Person最早的年份(最近一年)cars.

后来我找到了一个使用的解决方案,Projections但我偶然发现org.hibernate.QueryException: could not resolve property: minYear of: model.Person,这是db操作的代码:

Criteria criteria = sessionFactory.getCurrentSession().createCriteria("model.Person");
            criteria.add(create(personInstance));
            criteria.createAlias("minYear", "minYear");
            criteria.setProjection(Projections.min("cars.year").as("minYear"));
Run Code Online (Sandbox Code Playgroud)

无论如何都要将聚合值存储在transient方法中,Projections因为我只想尽可能避免使用普通的SQL和HQL.

java spring hibernate hql pojo

4
推荐指数
1
解决办法
7205
查看次数

如何使用 Hibernate 检索类的成员对象?

使用以下代码,我可以成功检索用户的地址字段,为此我需要使用 Projection 定义其所有字段。想象一下 address 有 100 个字段,在这种情况下,我必须定义所有字段。

我想知道是否可以只返回客户的地址对象而无需在 Proposition 中定义其所有字段?

我知道我可以检索地址的 id 并使用它来检索它的对象,但我想知道是否还有其他方法而不是这个方法或定义它的所有字段。

休眠

            .....
            Criteria cre = session.createCriteria(User.class, "user")
                    .createAlias("user.address", "addr");

            cre.add(Restrictions.eq("user.id", ID));

            ProjectionList pl = Projections.projectionList();
            pl.add(Projections.property("addr.id").as("id"));
            pl.add(Projections.property("addr.unit").as("unit"));
            .......
            cre.setProjection(pl);
            Address address = (Address) cre.list().get(0);
Run Code Online (Sandbox Code Playgroud)

我也使用了以下内容,但遇到了错误(无法解析属性:com.myProject.User 的地址)

    pl.add(Projections.property("addr").as("address"));
Run Code Online (Sandbox Code Playgroud)

爪哇

@Entity
public Class User {

     @Id
     @GeneratedValue
     private long id;

     @OneToOne
     private Address address;

     ...
}
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-mapping

3
推荐指数
1
解决办法
1710
查看次数

PropertyAccessor和PropertyAccessorFactory是删除还是已弃用?

在问题29980421中,我发现答案中的代码示例包括PropertyAccessor和PropertyAccessorFactory.当我检查hibernate-orm项目时,我发现这些类已被删除:

org.hibernate.property.PropertyAccessor在2015-06-04 15:12:17 GMT-04:00 org.hibernate.property.PropertyAccessorFactory在2015-06-04 15:12:17 GMT-04:00删除

有人会对此提出任何反馈意见吗?

如果可能,您是否会提供一个运行示例,替换问题29980421中第一个答案中的代码示例? 如何使用Hibernate检索一组成员对象?

编辑:

感谢您的评论.阅读评论后,我从问题中删除了hibernate 4.x. PropertyAccessorFactory怎么样?

orm hibernate

2
推荐指数
1
解决办法
1376
查看次数

标签 统计

hibernate ×4

java ×3

orm ×2

hibernate-criteria ×1

hibernate-mapping ×1

hql ×1

pojo ×1

spring ×1

sql ×1