Class A {
private String a;
private String b;
private B innerObject;
}
Class B {
private String c;
}
Run Code Online (Sandbox Code Playgroud)
就我而言,字符串 b 可能带有空值。我的模型映射器配置如下:
ModelMapper mapper = new ModelMapper();
mapper.getConfiguration()
.setFieldMatchingEnabled(true)
.setMatchingStrategy(MatchingStrategies.LOOSE)
.setFieldAccessLevel(AccessLevel.PRIVATE)
.setSkipNullEnabled(true)
.setSourceNamingConvention(NamingConventions.JAVABEANS_MUTATOR);
Run Code Online (Sandbox Code Playgroud)
当我映射对象时,我得到 b=null 值的目标对象。
试图远离此处显示的策略:SO-问题
我错过了什么?
我正在使用Spring MVC框架编写简单的博客Web应用程序。我愿意DTO在我的应用程序中添加图层。
我决定使用ModelMapper框架从Entity对象转换为DTO视图中使用的对象。
我只有一个问题。在我的主页上,我正在显示博客中的帖子列表。在我看来,这只是Post(实体)对象的列表。我想更改它以将PostDTO对象列表传递给我的视图。有没有什么办法来映射List的Post对象List的PostDTO单方法调用的对象?我当时正在考虑编写将转换该转换器的转换器,但是我不确定这是否是一个好方法。
另外,我还在其他几个地方使用Lists,Entities例如管理面板或页面上每个帖子下方的评论。
我想我错过了一些核心概念,因为我遇到了几个问题,但让我们从这个问题开始:当 a Userwith aSubscription保留在数据库中并且我尝试使用它时findOne(id),我得到NullPointerException. 我试图在生成的代码内部进行深入调试,似乎由于某种原因调用hashCode()了Subscription对象,这也出于不清楚的原因只有一个id集合,而所有其他属性都是null,但是因为它们(可能)hashCode()通过调用自己的方法参与该方法hashCode(),我得到这个例外。
所以基本上我想要的是用户成为许多社区的一部分,在每个社区中他都可以创建对他们内容的订阅。当我第一次调用 时SubscriptionController,一切正常,它创建User,Subscription和Community,我可以在数据库中看到它们,一切都很好。但是当我打电话时UserRepository.findOne(),也就是CrudRepository在里面UserSerivce- 我得到了异常。
我一直在努力解决这个问题两周,但没有运气,所以我真的希望有人能花一些时间来帮助我解决这个问题。下面是类:
用户:
@Entity
@Data
@NoArgsConstructor
public class User {
@Column(nullable = false)
@Id
private Integer id;
@OneToMany(mappedBy = "user", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JsonIgnore
Set<Subscription> subscriptions;
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(
joinColumns = {@JoinColumn(name …Run Code Online (Sandbox Code Playgroud)