Я использую CrudRepository.
Мне нужен метод findById в двух сценариях:
- EmailShort findById (длинный идентификатор);
- EmailFull findById (Long id);
EmailShort и EmailFull являются интерфейсами.
public interface EmailFull extends EmailCustom {
Long getId();
UserShort getSender();
String getContent();
String getTopic();
String getShortContent();
@JsonFormat
(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss")
Date getCreationTime();
}
public interface EmailShort extends EmailCustom {
Long getId();
UserShort getSender();
String getTopic();
String getShortContent();
boolean getIsRead();
void setRead(boolean read);
@JsonFormat
(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy HH:mm:ss")
Date getCreationTime();
}
Мой репозиторий:
@Repository
public interface EmailDao extends CrudRepository<Email, Long> {
EmailShort findById(Long id);
@Query("select e from email e where e.id=?1")
EmailFull findFullById(@Param("id") Long id);
@Query(value = "select * " +
"from email " +
"where email.id = :emailId", nativeQuery = true)
EmailShort findByIdWithShortSenderInfo(@Param("emailId") long emailId);
}
Я не могу использовать объект электронной почты, поскольку он содержит пользователя с такими данными, как адрес и т. Д. (Не нужен).
Есть идеи, как решить эту проблему? Может, мне стоит изменить определения сущностей?