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

}