@andrey_chirkin

Как сформировать структуру данных и вернуть на клиент?

Здравствуйте. Мне на клиенте нужна такая структура данных, которую необходимо получить из бд PostgreSQL:
{
			id: nanoid(),
			numberOperation: '010',
			nameOperation: 'Токарная',
			workshop: 6465,
			area: 7,
			OO: true,
			OTK: false,
			PZ: true,
			KPS: true,
			transition: [
				{
					id: nanoid(),
					nameTransition: 'Закрепить деталь',
					executor: [
						{
							id: nanoid(),
							nameExecutor: '4784',
							tsht: '4',
							tpz: '9',
							test: '7',
							tshtCalculated: '',
							tpzCalculated: '',
							testCalculated: '',
							kvr: '973'
						},
					]
				},

			],
}

Структура базы выглядит так (красным пометил таблицы которые нужны):
623ab5ad13732890217378.png
Как сформировать такую структуру на фреймворке Java Spring с помощью ORM и вернуть на клиент? Отношение один ко многим?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день.
Скажите пожалуйста, правильно ли я понимаю, что у вас есть таблица с данными, а также сами сущности (entity) и вы хотите вернуть результат полученный из БД на клиент?
Т.е. меня интересует следующее: db first or code first?
Если у вас code first, то значит сущности у вас имеются и вам необходимо создать доп. классы (DTO). Далее полученные данные из БД замаппить в DTO.
Для маппинга (после того, как будут созданы DTO) можно использовать доп. либы: ModelMapper, MapStruct или же интерфейс Converter<S,T>
Если хотите создать dto на основе имеющегос у вас json файла, то можно воспользоваться онлайн-сервисом или представляемой ими либой.
Сервис - https://www.jsonschema2pojo.org/
Кстати, вы уверены, что у вас в вопросе указаны данные в json?
Вот, json:
{
    "id": 1,
    "numberOperation": "010",
    "nameOperation": "Токарная",
    "workshop": 6465,
    "area": 7,
    "OO": true,
    "OTK": false,
    "PZ": true,
    "KPS": true,
    "transition": [
        {
            "id": 1,
            "nameTransition": "Закрепить деталь",
            "executor": [
            {
                "id": 1,
                "nameExecutor": "4784",
                "tsht": "4",
                "tpz": "9",
                "test": "7",
                "tshtCalculated": "",
                "tpzCalculated": "",
                "testCalculated": "",
                "kvr": "973"
            }, ]
        },

    ]
}

И вот dto построенные на основе вышеуказанного json (обратите внимание, что код скорее всего необходимо подправить под ваши нужды)
DTOs
-----------------------------------com.example.Example.java-----------------------------------

package com.example;

import java.util.List;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"numberOperation",
"nameOperation",
"workshop",
"area",
"OO",
"OTK",
"PZ",
"KPS",
"transition"
})
@Generated("jsonschema2pojo")
public class Example {

@JsonProperty("id")
public Long id;
@JsonProperty("numberOperation")
public String numberOperation;
@JsonProperty("nameOperation")
public String nameOperation;
@JsonProperty("workshop")
public Long workshop;
@JsonProperty("area")
public Long area;
@JsonProperty("OO")
public Boolean oo;
@JsonProperty("OTK")
public Boolean otk;
@JsonProperty("PZ")
public Boolean pz;
@JsonProperty("KPS")
public Boolean kps;
@JsonProperty("transition")
public List<Transition> transition = null;

}
-----------------------------------com.example.Executor.java-----------------------------------

package com.example;

import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"nameExecutor",
"tsht",
"tpz",
"test",
"tshtCalculated",
"tpzCalculated",
"testCalculated",
"kvr"
})
@Generated("jsonschema2pojo")
public class Executor {

@JsonProperty("id")
public Long id;
@JsonProperty("nameExecutor")
public String nameExecutor;
@JsonProperty("tsht")
public Long tsht;
@JsonProperty("tpz")
public Long tpz;
@JsonProperty("test")
public Long test;
@JsonProperty("tshtCalculated")
public String tshtCalculated;
@JsonProperty("tpzCalculated")
public String tpzCalculated;
@JsonProperty("testCalculated")
public String testCalculated;
@JsonProperty("kvr")
public Long kvr;

}
-----------------------------------com.example.Transition.java-----------------------------------

package com.example;

import java.util.List;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"id",
"nameTransition",
"executor"
})
@Generated("jsonschema2pojo")
public class Transition {

@JsonProperty("id")
public Long id;
@JsonProperty("nameTransition")
public String nameTransition;
@JsonProperty("executor")
public List<Executor> executor = null;

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы