使用Spring Data Rest更新多个相关表

时间:2017-07-28 18:06:49

标签: spring-data spring-data-jpa spring-data-rest openjpa

我有两个表#include <stdio.h> #include <stdlib.h> #define DIM_MAX 9 int d = 3; void changeArray(int d, int *array[d]); int main() { //alocate array of 'd' colummns and 'd' row using malloc using array of pointers int *array[DIM_MAX] = {0}; for(int count = 0; count < d; count++) { array[count] = (int *)malloc(d*sizeof(int *)); } /* Call changeArray function */ changeArray(d, array); for(int i = 0; i < d; i++) { for(int j = 0; j < d; j++) { printf("%d ", array[i][j]); } printf("\n"); } for(int count = 0; count < d; count++) { free(array[count]); } return 0; } void changeArray(int n, int *array[d]) { for(int i =0; i < n; i++) { for(int j = 0; j < n; j++) { array[i][j] = i*j; } } return; } Employee Address关系。

one-to-one

我正在使用Spring Data REST。

Q1。我想公开一个数据存储库方法来更新CREATE TABLE EMPLOYEE( ID BIGINT PRIMARY KEY NOT NULL, EMP_NAME VARCHAR(50) NOT NULL, PHONE_ID BIGINT, DELETED BOOLEAN NOT NULL DEFAULT FALSE, CONSTRAINT CONSTRAINT1 FOREIGN KEY (PHONE_ID) REFERENCES PHONE (ID) ) CREATE TABLE PHONE( ID BIGINT PRIMARY KEY NOT NULL, PH_NUMBER VARCHAR(20) NOT NULL, DELETED BOOLEAN NOT NULL DEFAULT FALSE, ) 和“PHONE”的DELETED列。

如下所示:

EMPLOYEE

Q2。使用Spring数据REST甚至可以做到这一点。

请注意:我不想使用原生查询,即TestRepository implements CrudRepository{ @Query(value="update both table query", native=false) public void updateBoth(); }

1 个答案:

答案 0 :(得分:3)

您必须在正确使用框架和过度使用框架之间找到平衡。

Spring Data REST是将您的存储库暴露给HTTP,但您无法使用它来解决所有问题。

这里正确的方法是创建一个自定义控制器,并通过适当的事务管理实现所需的功能,以获得所需的数据完整性。