Java 如何在Spring Boot中返回模型中不存在的字段?
因此,我有一个用例,希望为表的所有行返回一个特定属性。但该属性在表中不存在。它应该是动态生成的 例如,名为Java 如何在Spring Boot中返回模型中不存在的字段?,java,spring,spring-boot,spring-data,hibernate-mapping,Java,Spring,Spring Boot,Spring Data,Hibernate Mapping,因此,我有一个用例,希望为表的所有行返回一个特定属性。但该属性在表中不存在。它应该是动态生成的 例如,名为Student的表具有以下属性 *身份证 *名字 现在,当我为这个模型类使用存储库时,我想返回所有的数据行,包括ID和Name,但还要在每一行中附加另一个名为URL的属性。因此,输出将是- 身份证 名字 网址 URL的数据可以动态生成-比如=“example.com/”+ID 我该怎么办 此实体的相同模型/存储库/服务类如下所示- 实体学生 @Entity @AllArgsConstru
Student
的表具有以下属性
*身份证
*名字
现在,当我为这个模型类使用存储库时,我想返回所有的数据行,包括ID
和Name
,但还要在每一行中附加另一个名为URL
的属性。因此,输出将是-
- 身份证
- 名字
- 网址
URL
的数据可以动态生成-比如=“example.com/”+ID
我该怎么办
此实体的相同模型/存储库/服务类如下所示-
实体学生
@Entity
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Setter
public class StudentDetail {
@Id
private Long ID;
private String Name;
}
存储库
@Repository
public interface StudentDetail extends JpaRepository<StudentDetail , Integer> {
}
@存储库
公共界面StudentDetail扩展了JpaRepository{
}
服务
@Override
public List<StudentDetail> getStudentDetails() {
List<StudentDetail> studentDetail = studentDetailsRepository.findAll();
return studentDetail;
}
@覆盖
公共列表getStudentDetails(){
List studentDetail=studentDetailsRepository.findAll();
返回学生详细信息;
}
该服务将只返回具有
ID
和Name
属性的所有行。如何计算存储库中的URL参数?您可以添加一个临时字段(这意味着它不会映射到任何列并持久化):
您可以添加临时字段(这意味着它不会映射到任何列并持久化):
1.服务调用是否会返回url值,因为它没有被持久化?2.是否可以在存储库层而不是实体本身中移动此url逻辑?1。是的,它将被返回,而不是持久化,2。也许吧,但我不知道如何做,这不是存储库的用途,如果您真的不希望它位于实体中,您可以将实体映射到
@Service
中的DTO,这样url属性确实会显示,但它无法将ID添加到其中。URL被定义为-private String URL=“example.com”+ID。我也尝试了“this”引用。但是,ID显示为空,您可能需要使用@PostConstruct
Awesome。谢谢请注意,因为我使用@PostConstruct,所以必须手动定义URL参数的getter,并在其中定义其值。lombok的优势在该地产1中消失。服务调用是否会返回url值,因为它没有被持久化?2.是否可以在存储库层而不是实体本身中移动此url逻辑?1。是的,它将被返回,而不是持久化,2。也许吧,但我不知道如何做,这不是存储库的用途,如果您真的不希望它位于实体中,您可以将实体映射到@Service
中的DTO,这样url属性确实会显示,但它无法将ID添加到其中。URL被定义为-private String URL=“example.com”+ID。我也尝试了“this”引用。但是,ID显示为空,您可能需要使用@PostConstruct
Awesome。谢谢请注意,因为我使用@PostConstruct,所以必须手动定义URL参数的getter,并在其中定义其值。lombok的优势在这片土地上消失了
public class StudentDetail {
@Id
private Long ID;
private String Name;
@Transient
private String url = // Here comes your implementation
}