早上好
我正在使用ModelMapper将DTO映射到实体,反之亦然,与此相关,我有一个问题。
1)当我从SonController获取SonDTO时,我需要将长的motherId映射到实体Son,但在那里我有实体mothermother来建立关系,它在内部有id。那么我如何将这个SonDTO motherId映射到实体mothermother中,反之亦然?
类以下:
class SonDTO {
long id;
String name;
int age;
long motherId;
}
class MotherDTO{
long id;
String name;
int age;
List<Long> sonsId;
List<String> sonsName;
}
@Entity
class Mother{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
@OneToMany(mappedBy = "mother", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
List<Son> sons;
}
@Entity
class Son{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private int age;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "mother_id")
private Mother mother;
}
您可以为实体使用PropertyMap
并将其添加到ModelMapper
。
PropertyMap<Mother, MotherDTO> motherMap = new PropertyMap<Mother, MotherDTO>() {
protected void configure() {
map().setSonsId(source.getSons()...//here is your choice of coding
// you can either use streams or simple for loops to transform the
// entity into a List<Long>
);
//other attributes here
}
};
最终:
modelMapper.addMappings(motherMap);
您不必为sondto
对象创建映射,因为modelMapper正在查看属性名称并使用默认匹配策略,而sondto
的属性名称仅足以不使用其他策略并匹配正确的源(son
)属性。
链接:
1)匹配过程(非常重要):这里
2)匹配策略(非常重要):这里
3)示例(重要):这里。(请注意这里的属性命名。)
我目前正在尝试使用ModelMapper的映射方法执行实体到DTO的映射。在最深的属性映射上,映射结果为null,但它应该是一个对象。 以下是我的映射源实体(省略brevety的Loombok getter和setter): 以下是我的目标DTO(省略brevety的Loombok Getter和Setter): 在我的Controller类方法上,我这样做映射: My clientService
我在JPA中使用Micronaut数据,并且有两个实体。第一个是< code >配方: 第二个是,它指的是 : 现在我想在API中为DTO提供属性,但不提供整个实体,因为它包含MonyToOne和OneToMany关系,在这种情况下不需要。因此,我为此创建了投影 DTO: 并将< code>listAll()方法添加到< code > parse error repository 中: 但似乎Mi
问题内容: 说,我有以下实体: 通过结合使用模式自动生成功能,我得到了一个附加表,其中包含和之间的映射。但是,我想实现通过添加一个一对多的关系的 编号 为( 例如,没有附加表 )。 这可能吗?如果是,我应该使用什么注释来创建这种映射? 问题答案: 通常,使用@JoinColumn批注是可能的。它也适用于可嵌入对象。 如果您对embeddable中指定的列的A_ID名称不满意,则可以覆盖实体A中的列
我使用Spring Data Neo4J 5.0.10与Spring Boot 2.0.5。节点I具有以下2个实体,用户兴趣实体和用户兴趣实体的关系。 这很有效。我可以创建一个新用户并将该用户与userInterest关联。当我再次发送相同的详细信息时,节点和边不会重复。 当我在关系实体中启用权重属性时,即使权重属性值相同,关系似乎也是重复的。 我记得我读到过,只要属性相同,就不应该创建另一种关系
问题内容: 我有以下实体: 我的属性ScriptItem是其他3个类的接口。是否可以将JPA配置为在运行时执行时设置正确的类ID? 其他资源: 我应该使用哪些注释来让JPA理解要保存3个类之一的ID? 提前致谢, 问题答案: 这确实是一个好主意,但不幸的是,JPA不支持将接口直接映射为实体属性。 您只能映射直接用注释的顶级类。这个顶级类可以实现一个接口。 这个功能已经被要求并讨论了很长时间。 根据
我是为了一个电子商务系统而向Lucene提出的,需要索引产品及其属性。然而,我不确定如何处理这个问题,因为每个产品都有一个完全唯一的属性列表。 大多数在线示例显示lucene访问层具有产品结构,如名称/标题/描述,有时甚至带有只为每个产品添加的自定义域。