我的申请中有一个性能问题。
我有三个实体,其关系如下:
one Order => many OrderLines => Many Cards
从数据库加载实体需要太多时间,orderLines加载的是急切加载,而Cards加载的是惰性加载。为了让应用流畅,懒惰加载是必要的。
我需要为一个案例配置即时加载,我需要帮助。
我正在使用jhsipster stack:spring boot和JPA
我试图编写Hql查询
@Query(value = "from Order as order "
+ "inner join order.orderLines as orderLines "
+ "inner join orderlines.cards gc "
+ "where order.id= :order")
Order findWithDependencies(@Param("order")Long order);
我有un错误:意外的令牌订单(第2行)
我尝试了原生查询
@Query(value = "select * "+
"from order_table ot "+
"left join order_line ol ON ot.id = ol.order_id "+
"left join giftcard gc ON gc.orderline_id = ol.id "+
"where ot.id=:order", nativeQuery= true)
Order findWithDependenciesNative(@Param("order")Long order);
但当我这么做的时候
orderLine.getCard()
从代码中,Hibernate仍然执行查询以从数据库获取数据,这导致了我的性能问题。
必要的实体代码:
public class Order implements Serializable {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "order_id", nullable = false)
@Size(min = 1)
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JsonProperty("detail")
@Valid
private List<OrderLine> orderLines = new ArrayList<>();
}
public class OrderLine extends AbstractAuditingEntity implements Serializable, Comparable {
@OneToMany
@JoinColumn(name = "orderline_id")
@JsonIgnore
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
private Set<Giftcard> giftcards = new HashSet<>();
}
public class Giftcard extends AbstractAuditingEntity implements Serializable, Comparable {
@ManyToOne(optional = true)
@JoinColumn(name= "orderline_id")
@JsonIgnore
private OrderLine orderLine;
}
实际上是我的代码
{
Order order = orderRepository.findWithDependenciesNative(linkFile.getOrder());
//Some code
List<OrderLine> orderLines = order.getOrderLines();
orderLines.sort(Comparator.comparing(OrderLine::getId));
for (OrderLine orderLine : orderLines) {
Stream<Card> cards = orderLine.getCards().stream().sorted(Comparator.comparing(Card::getCardNumber));
for (Card card : cards.collect(Collectors.toList())) {
//Some code
}
}
问题是在第二个foreach中,对于每个卡,hibernate执行两个查询,而带有join的请求不会加载数据,比如eager配置。你有办法帮我吗?
非常感谢
使用“join fetch”避免延迟加载。“fetch”联接允许使用单个select来初始化值的关联或集合及其父对象。这在收集的情况下特别有用。它有效地覆盖了关联和集合的映射文件的外部联接和延迟声明。请参阅有关join fetch的更多信息:Hibernate中join和join fetch的区别
@Query("Select order from Order as order "
+ "inner join fetch order.orderLines as orderLines "
+ "inner join fetch orderlines.cards gc "
+ "where order.id= :order")
Order findWithDependencies(@Param("order")Long order);
问题内容: 我有一个字符串中的ID列表,并且想使用Hibernate来获取具有这些ID的行。是一个Hibernate / JPA实体(对不起,如果我在这里混淆了命名)。 我的代码是: 但这失败了: 如何使零件工作?谢谢。 问题答案: JPQL查询的语法不正确。两种使用(带有位置参数): 或(使用命名参数): 以下是JPA 1.0规范中有关参数的相关部分: 4.6.4.1位置参数 以下规则适用于位置
我对JS有问题。我正在尝试制作三个按类型排序的配料列表(用于酿造药剂),所有这些都是标签中的复选框。 你应该选择(选中)三个列表中的每一个元素,以便酿造药水。如果你选择了正确的成分,然后按下“酿造药水”按钮,你就有了一种确定的药水,如果你选择三种不匹配的成分,它会显示 在页面底部写着“看来这次没用了!”按下“酿造药水”按钮后。 在JavaScript中,我对三个列表都使用了一个数组,对每个列表中的
我正在开发一个spring批处理应用程序(内存为2GB),尝试处理数据(在处理过程中使用select查询获取数据),并在postgres DB中插入大约100万条处理过的记录。我在这个项目中使用Spring Data JPA。但是Spring JPA在处理这些记录时消耗了太多内存
任何解决这一问题的建议都将不胜感激。或者我们可以用另一种方式来计数?我想补充一些细节。滑动大小是一个事件和窗口大小超过10小时(每秒大约有300个事件),我们需要对每个事件做出反应。所以在这种情况下,我们没有使用Flink提供的窗口。我们使用来存储前面的信息。在中用于触发旧数据的清理作业。最后dinstinct键的数量非常多。
我是Android SDK/API环境的新手。这是我第一次试着画一张图/图表。我尝试使用3个不同的免费库在模拟器上运行不同类型的示例代码,但布局屏幕上没有显示任何内容。logcat将重复以下消息: 当我运行与一个许可库的评估副本相关的示例代码时,问题并没有持续存在,并且图表工作了。
(Android)在音乐播放器上,您可以按预期更新搜索栏,如下所示: 但是,如果重点放在搜索栏上,则不间断、稳定地反馈进度。类似于“搜索控制25%,“搜索控制25%”,“搜索控制25%,搜索控制26%,“寻找控制26%”,“查找控制27%” 我缺少某物,但无法解决问题。我已将contentDescription设置为除@null之外。但是这次它没有停止读取内容描述。 在Spotify客户端上,我检