@RestController
или же @ResponseBody
, если используете @Controller
<!-- https://mvnrepository.com/artifact/org.hibernate.orm/hibernate-core -->
<dependency>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.0.0.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-entitymanager -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.6.8.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jpa -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.6.6</version>
</dependency>
-----------------------------------com.example.Example.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({
"0",
"1",
"2"
})
@Generated("jsonschema2pojo")
public class Example {
@JsonProperty("0")
public com.example._0 _0;
@JsonProperty("1")
public com.example._1 _1;
@JsonProperty("2")
public com.example._2 _2;
}
-----------------------------------com.example._0.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({
"created",
"suip",
"result",
"operationNumber"
})
@Generated("jsonschema2pojo")
public class _0 {
@JsonProperty("created")
public String created;
@JsonProperty("suip")
public String suip;
@JsonProperty("result")
public String result;
@JsonProperty("operationNumber")
public String operationNumber;
}
-----------------------------------com.example._1.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({
"created",
"suip",
"result",
"operationNumber"
})
@Generated("jsonschema2pojo")
public class _1 {
@JsonProperty("created")
public String created;
@JsonProperty("suip")
public String suip;
@JsonProperty("result")
public String result;
@JsonProperty("operationNumber")
public String operationNumber;
}
-----------------------------------com.example._2.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({
"created",
"suip",
"result",
"operationNumber"
})
@Generated("jsonschema2pojo")
public class _2 {
@JsonProperty("created")
public String created;
@JsonProperty("suip")
public String suip;
@JsonProperty("result")
public String result;
@JsonProperty("operationNumber")
public String operationNumber;
}
public void updateUserByInn(List<Users> usersList) {
for (Users dto : usersList) {
Converter <UserDto, User>
, можно подключить либы (ModelMapper, MapStruct).Users user = usersRepository.findByInnAndExternalPartnerId(dto.getInn(), dto.getExternalPartnerId()).orElseThrow(UserNotFoundException::new);
Optional<User>
updateUserByInn
обновить юзера по ИНН. А в методе вы обновляете пользователей, а не одного юзера еще и притом обновляете не только по Inn, а по ExternalPartnerId тоже. Значит, метод назван некорректноЕсли брать запрос: localhost:8080/ то он должен проверить была ли сделана авторизация, если нет, то делает redirect, если было сделано, то он показывает разметку, в котором уже находятся данные объекта пользователя.
@GetMapping("/admin")
public String dashboard() {
// Проверка авторизации пользователя
boolean isAuthorised = SecurityContextHolder.getContext().getAuthentication() != null &&
SecurityContextHolder.getContext().getAuthentication().isAuthenticated() &&
!(SecurityContextHolder.getContext().getAuthentication() instanceof AnonymousAuthenticationToken);
if (isAuthorised) {
return "redirect:/admin/dashboard";
}
return REDIRECT_ADMIN_LOGIN;
}
Так же было не понятно что после кнопки авторизации, передача объекта другому запросу с помощью redirect. По коду выглядит все так
addAttribute()
нужно использовать addFlashAttribute()
UUID.randomUUID().toString();
<div id="outlet"></div>
List<WebElement>
) Converter<S,T>
{
"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"
}, ]
},
]
}
-----------------------------------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;
}
Облазил уже все статейки интернета
обновить
существующую запись на основе данных, которые прибежали из контроллера в виде DTO.Далее конвертирую в entity, но откуда мне взять значения тех полей, которых не было в запросе?
Converter<S, T>
. И для каждого из полей сделать проверку типа (псевдокод): if (fieldValue != null) { entity.setField(fieldValue); }
modelMapper.getConfiguration().setPropertyCondition(Conditions.isNotNull());
вот мне интересно, как решается этот вопрос. Разве это нормально, что на каждый пришедший запрос к сервису приходится ходить к базе данных? И это без учета логики!
Это базовая ситуация, с которой сталкивается каждый. Допустим у меня entity Person с атрибутом даты рождения, которую я не хочу отображать в PersonDto. Когда пользователь пришлем мне PersonDto по API для, допустим, операции обновления, то как мне при конвертации в entity вернуть эту дату рождения, чтобы я мог сохранить новую сущность?
Проблема в том что, Из-за больших обращений в сторонний API, программа работает слишком долго(5-7 минут) при запуске на прод получаю 504 Gate away.
Flux<>
При каждом итерации цикла используя WebClient стучится с параметром в сторонний API с БД и получает некие данные обратно.