还没有弄清楚如何传递额外的参数或替代方案。
目前我正在映射订单和订单行。两个对象是不同的并且需要@mappings。示例我有一个 Order 和 OrderRequest 对象,两者都不同,需要 @Mappings 注释来映射值,与 OrderLines 相同。
我创建了以下映射器
所以我的问题是 OrderLine 需要来自 Order 对象的 OrderId。然而,在 OrderLineMapper 中,它传递的是 OrderLine 而不是 Order。如何将 OrderId 发送到 OrderLineMapper?目前,我让 OrderMapper 执行 @AfterMapper,循环遍历 orderLines 并填充 OrderId。
任何帮助都会很棒。
类 订单映射器
@Mapper(componentModel = "spring", uses = {OrderLineMappers.class})
public abstract class OrderMapper {
@AfterMapping
protected void orderRequestFromOrder( Order order, @MappingTarget
OrderRequest orderRequest ) {
//Wanting to do this at the OrderLineMapper class and not here
String orderId = order.getId();
List<OrderLineRequest> lines …Run Code Online (Sandbox Code Playgroud) 目前,在我的 spring @Query 中创建本机 SQL 时,我无法知道 SQL where 子句中的字段(认为是临时的)。因此我传递了整个 where 子句。
如果我将 SQL 输出到控制台并将其粘贴到我的 SQL 编辑器中,我就能够收到有效的结果集。
SELECT * FROM lorder WHERE order_id = 1196077
Run Code Online (Sandbox Code Playgroud)
控制台的最后一个 SQL 输出是:Hibernate:
/* dynamic native SQL query */ SELECT
*
FROM
lorder
WHERE
?
and the where clause value being passed in to the @query is:
order_id = 1196077
Run Code Online (Sandbox Code Playgroud)
这就是我目前正在做的事情,但不起作用。
@Query(
value = "SELECT * FROM lorder WHERE :where",
nativeQuery = true)
List<OrderEntity> listSelected(@Param("where") String where);
Run Code Online (Sandbox Code Playgroud)
不确定是否可以传递整个 where 子句,但我期待一个列表。然而我目前得到的是一个空的集合。