当前位置: 首页 > 知识库问答 >
问题:

如何使用JPA关系实体创建RESTAPI

茹正初
2023-03-14

我有个问题。当我有其他实体时,我不知道如何创建API。我与邮递员工作,当我做一个请求,以看到所有项目从数据库,我想收到实体也。

例如,这是我的实体:

@Entity
@Table(name = "project")
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "proj_id")
    private int projectId;

    @Column(name = "project_name")
    private String projectName;

    @Column(name = "dg_number")
    private int dgNumber;

    @ManyToMany
    @JoinTable(name = "project_gate_relation", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "gate_id"))
    @JsonBackReference
    private  List<Gate> gates;

    @ManyToMany
    @JoinTable(name = "project_threshold_relation", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "thresholdgates_id"))
    @JsonBackReference
    private  List<Threshold> thresholds;
@Entity
@Table(name = "gate")
public class Gate {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "gate_id")
    private int gateId;

    @Column(name = "gate_type")
    private String gateType;

    @Column(name = "gate_value")
    private float value;
@Entity
@Table(name = "threshold")
public class Threshold {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "threshold_id")
    private int thresholdId;

    @Column(name = "threshold_value")
    private int thresholdValue;

    @Column(name = "threshold_type")
    private String thresholdType;
@RestController
@RequestMapping(ProjectController.PROJECT_URL)
public class ProjectController {

    public static final String PROJECT_URL = "/cidashboard/projects";

    @Autowired
    private final ProjectService projectService;

    public ProjectController(ProjectService projectService) {
        this.projectService = projectService;
    }

    @GetMapping
    public List<Project> getAllProjects(){
        return projectService.findAllProjects();
    }

    @GetMapping("/{id}")
    public Project getProjectById(@PathVariable int id) {
        return projectService.findProjectById(id);
    }

    @PostMapping
 //   @Consumes(MediaType.APPLICATION_JSON_VALUE)
    public Project saveProject(@RequestBody Project newProj) {
        return projectService.saveProject(newProj);
    }
}
 {
        "projectId": 1,
        "projectName": "jenkins",
        "dgnumber": 1
    }, 

共有1个答案

徐昆
2023-03-14

在JPA中默认情况下不加载相关实体。必须在@manytomany关系中定义fetch=fetchtype.eager

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "project_gate_relation", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "gate_id"))
@JsonBackReference
private  List<Gate> gates;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "project_threshold_relation", joinColumns = @JoinColumn(name = "proj_id"), inverseJoinColumns = @JoinColumn(name = "thresholdgates_id"))
@JsonBackReference
private  List<Threshold> thresholds;
 类似资料:
  • 问题内容: 我正在尝试使用JPA 2.0创建具有通用关系的多态实体。应该有两个表,一个事件表和一个通知表。在这些表内是彼此相关的具体实体,如下所示: 从逻辑上讲,这应该在hibernate状态下是可能的,因为在SQL中是可能的: 这就是我所拥有的: 使用此代码,我可以持久保存并获取任何Event,Notification,LoginEvent或NotificationEvent,但是当我尝试在JP

  • 问题内容: 我有以下四个表: SCHEDULE_REQUEST表: ID,APPLICATION_ID(FK) 应用表: ID,代码 USER_APPLICATION表: APPLICATION_ID(FK),USER_ID(FK) 用户表: ID,NAME 现在,我想创建一个条件条件,以便为指定的用户ID 选择。 我有以下代码: 您能帮我如何将查询过滤器传递给关系对象吗?我认为我在 “ appl

  • Java类可以很容易地转换成实体。 对于实体转换,基本要求是 - 无参数构造函数 注解 在这里,我们将学习如何通过示例,学习将常规Java类转换为实体类 - 简单的一个学生类(Student),代码如下 - 上面的类是一个常规的java类,有三个属性: , 和 。要将此类转换为实体,请在此类中添加和注解。 - 这是一个标记注释,表明这个类是一个实体。这个注释必须放在类名称上。 - 此注释位于持有持

  • 我试图在Neo4j中插入两个节点之间的关系。我正在使用Neo4J(2.1.8社区) 我正在使用尝试创建员工经理关系。此关系实体是报表。(两个类都在下面给出) 但当我试图挽救这段感情的时候 我得到了例外作为 线程“main”组织中出现异常。springframework。刀。DataRetrievalFailureException:关系[0]没有propertyKey=“type”的属性。;嵌套的

  • 我正在尝试使用一个不是很简单的关联表在两个JPA实体之间进行ManyTo许多连接。我想知道是否有一种方法可以在不创建关联表实体的情况下实现这一点(类似于使用@JoinTable)。 表A-ID(PK) -名称 表b -ID(PK) -名称 TableMapping-ID(PK) -Parent\u ID(FK)-- 映射以我上面描述的方式存储,原因我不知道,也无法更改。很多地方都在这样使用它,我必

  • 我正在尝试让Spring为我的实体类生成表。我不确定我错过了什么,这是我第一次使用容器化DB。 下面是我的文件: 路径为[]的上下文中servlet[dispatcherServlet]的servlet.Service()引发异常[请求处理失败;嵌套异常为org.SpringFramework.dao.InvalidDataAccessResourceUsageException:无法执行语句;S