我有一个名为“review”的实体,它与“user”实体有一个one关系,与“reviewstage”实体有一个one关系。我已经实现了一个dto模式,所以,我也有reviewdto,它实际上是发送到ui的内容。我使用mapstruct将实体Map到dto。一切都很好,但是,我宁愿在关系Map中使用userdto和reviewstagedto。
这很有效:
@Entity
@Getter @Setter @NoArgsConstructor
public class Review {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long reviewId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "ownerId")
private User owner;
@OneToMany(mappedBy = "reviewId")
private Set<ReviewStage> stages;
}
为了好玩,我试过这个,但显然不行:
@Entity
@Getter @Setter @NoArgsConstructor
public class Review {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long reviewId;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "ownerId")
private UserDTO owner;
@OneToMany(mappedBy = "reviewId")
private Set<ReviewStageDTO> stages;
}
我只需要往正确的方向推一下。谢谢,
2条答案
按热度按时间pokxtpni1#
如果您关心性能,我可以建议您看看blaze持久性实体视图提供了什么。
我创建了这个库,以便在jpa模型和自定义接口或抽象类定义的模型之间进行简单的Map,比如spring数据在steroids上的投影。其思想是以您喜欢的方式定义目标结构(域模型),并通过jpql表达式将属性(getter)Map到实体模型。
对于blaze持久性实体视图,用例的dto模型可以如下所示:
查询是将实体视图应用于查询的问题,最简单的就是按id进行查询。
ReviewDTO a = entityViewManager.find(entityManager, ReviewDTO.class, id);
spring数据集成允许您像spring数据投影一样使用它:https://persistence.blazebit.com/documentation/entity-view/manual/en_us/index.html#spring-数据特征请注意,这将只获取实际需要的状态。使用mapstruct或其他beanMap解决方案,您必须自己处理有效的获取。
zpjtge222#
这个
relationships
应该介于entities
如果你想做一个dto
为了Review
在这里面呢dto
你想退票吗UserDto
例如,您应该创建mapstruct class
MapUserEntity
至UserDTO
例子