В приложении springboot я использовал класс UserDateAudit
, что означает, что какой бы класс сущности его не расширял, в этом классе автоматически заполняются 4 поля, когда они должны быть createdBy
createdAt
updatedBy
updatedAt
. Класс UserSummary
содержит информацию о User
. У меня есть сущность Branch
, которая расширяет UserDateAudit
. Теперь, когда я конвертирую Branch
в BranchDTO
, мне также нужен объект UserSummary
, чтобы знать, кто создал запись. Записи Branch
успешно сохраняются с соответствующим user_id
в столбце createdBy
db. Итак, я думаю, что у меня будет пользовательская функция в картографе, которая будет брать user_id
из Branch
, затем находить в Db, затем создавать объект UserSummary
и назначать BRanchDTO
. Есть ли правильный способ добиться этого?
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE, componentModel = "spring")
public interface BranchMapper
{
Branch toBranch(BranchDTO branchDTO);
BranchDTO toBranchDTO(Branch branch);
List<BranchDTO> toBranchDTOS(List<Branch> branches);
Branch updateBranch(BranchDTO branchDTO, @MappingTarget Branch branch);
}
DateAudit. java
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(
value = {"createdAt", "updatedAt"},
allowGetters = true
)
public abstract class DateAudit implements Serializable
{
@CreatedDate
@Column(nullable = false, updatable = false)
private Instant createdAt;
@LastModifiedDate
@Column(nullable = false)
private Instant updatedAt;
}
UserDateAudit. java
@MappedSuperclass
@JsonIgnoreProperties(
value = {"createdBy", "updatedBy"},
allowGetters = true
)
public class UserDateAudit extends DateAudit
{
@CreatedBy
@Column(nullable = false, updatable = false)
private Long createdBy;
@LastModifiedBy
@Column(nullable = false)
private Long updatedBy;
}
Филиал. java
@Entity
@Table(name = "branches")
public class Branch extends UserDateAudit
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotBlank
@Column(name = "name", nullable = false)
@Size(max = 20)
private String name;
@Column(name = "default_branch", nullable = false)
private boolean defaultBranch;
}
BranchDTO. java
public class BranchDTO
{
private Long id;
private String name;
private boolean defaultBranch;
UserSummary createdBy;
}
UserSummary. java
public class UserSummary
{
private Long id;
private String username;
private String name;
}