大家好!
我正在Spring应用程序中实现Mapstruct映射器。
有两个相关实体:user
和order
。只是为了简化->用户可以有许多订单。
public class Order {
...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
...
}
public class OrderDTO {
...
private Long userId;
...
}
public class User {
...
@OneToMany(mappedBy = "user", orphanRemoval = false, fetch = FetchType.LAZY, cascade = CascadeType.PERSIST)
private Set<Order> orders;
...
}
public class UserDTO {
...
private Set<Long> ordersIds;
...
}
public interface CommonMapper<E extends AbstractEntity, D extends AbstractDto> {
D toDto(E e);
E fromDto(D dto);
Set<D> toSetDto(Set<E> e);
Set<E> fromSetDto(Set<D> d);
List<D> toListDto(List<E> e);
List<E> fromListDto(List<D> d);
}
OrderMapper类:
@Mapper(componentModel = "spring")
public interface OrderMapper extends CommonMapper<Order, OrderDTO> {
OrderMapper INSTANCE = Mappers.getMapper(OrderMapper.class);
@Override
@Mapping(source = "user.id", target = "userId")
OrderDTO toDto(Order order);
@Override
@Mapping(source = "userId", target = "user.id")
Order fromDto(OrderDTO dto);
}
好吧,我的问题是:
如果我使用以下命令传递OrderDTO:
前面描述的情况在我的应用程序中造成了巨大的问题。如果有任何帮助,我将不胜感激。
这不是一个优雅的解决方案,但它是有效的。我不确定Mapstruct是否已经修复了这个问题。
将此添加到OrderMapper中。
@AfterMapping
default Order afterMapping(@MappingTarget Order order) {
if (order != null && order.getUser().getId() == null) {
order.setUser(null);
}
return order;
}
如果(tagrecord.gettagid()==null&&tagrecord.gettaglabel()==null),我实际上希望生成的方法返回一个null标记对象。有没有可能,我该如何实现这一点?
所以这是我以前在jooq 3.11中工作的查询。 我正在更新一个JSON字段,但是它使用Json绑定映射到我模型中的字符串,我将在下面发布 这在升级到jooq 3.13.2后不再有效。我还不得不将我的sql方言更改为mysql,即使我正在使用mysql 5_7数据库,这可能是问题所在? 我也试过这个,它还是一样的 JsonBinding.class JsonConverter.class 以下是j
环境: jdk:17.0.1 映射:1.5.1.Final 使用默认配置,我生成了以下代码 但我想在source的所有字段都为null时返回null,如下所示 我应该如何配置它?
尽管违反直觉,而且显然不是JPA标准所要求的,但Eclipselink和Hibernate都竭尽全力创建了以下NullPointerExceptions的源代码:当嵌入实体中的对象的所有字段都是null时,它们会将字段本身替换为null。下面是一个简化的例子: 我们的想法是,我们可以编写类似于。当直接访问字段时,我们会为此付出额外的间接代价:。这通常是一个很好的权衡,但当我们必须编写
我试图使用MapStruct在dto和实体对象之间映射convert,但是生成的映射器实现只返回空的映射对象。 BeermapperImpl 任何人都可以提供我的代码可能出错的地方?谢谢!
我有以下JPQL查询: 这应该返回所有对具有NULL的。 但是,我正在运行代码并进行调试,我看到返回的集合包含此字段为null的实体。 这是JPQL中的错误吗?