如何限制实体取出由SQL查询

SQLQuery query = session.createSQLQuery("select {o.id} from order o " + 

"LEFT JOIN bookings b ON b.id = o.bookingId " +

);

List pusList = query.addEntity(Order.class)

.list();

,为了I类有:如何限制实体取出由SQL查询

@OneToOne(cascade = CascadeType.ALL, mappedBy = "order", fetch = FetchType.LAZY) 

private Trip trip;

,但在执行过程中,我看到: 拳头,主SQL。和许多许多这样的查询: 休眠:/ *负载旅行* /选择......

如何拒绝提取旅行?

更新: 旅行在这种情况下是无用的。更好的是不要取它。

回答:

您正在提取懒惰这意味着主要将被加载,然后每次旅行,因为它是必需的。

一般见Hibernate performance documents看看能做些什么。

由于这是一对一的映射,我会将获取更改为fetch = FetchType.JOIN。这将与main同时加载行程,而不会向数据库添加更多行程。

回答:

他们这样设置的方法是,为了建立你的订单对象,数据库必须查看旅行表(如果我正确读取了你的定义,那么在'旅行'表引用订单)。你确定这确实是一对一的关系吗?我不知道您的域,但通常外键映射到一对多关系,并且该属性将成为旅行或订单中的一个集合。

请包括一些关于您的表/关系和相应类的更多信息,特别是应该包含关系的成员。我认为这给了我们更多的信息来解释加载的原因以及为避免这种情况可以采取的措施。

以上是 如何限制实体取出由SQL查询 的全部内容, 来源链接: utcz.com/qa/262945.html

回到顶部