Я строю API REST, используя Spring Boot и Hibernate. Теперь я хочу создать метод поста, который получает JSON. После некоторых подтверждений я хочу сохранить этот объект как новую сущность в моем БД. Мне было интересно, как преобразовать карту атрибутов в новый пользовательский объект? У меня есть следующие классы:
user.java
@Entity
@Table(name="users")
@JsonIdentityInfo(generator= ObjectIdGenerators.IntSequenceGenerator.class, property="id")
public class User {
@Transient
Logger logger = LogManager.getLogger(getClass());
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int ID;
@NotNull
private String username;
@NotNull
private String Last_Name;
@NotNull
private String First_Name;
private String Title;
//....
}
usercontroller.java < /p>
@PostMapping("/user")
public ResponseEntity test(@RequestBody Map object) throws Exception {
try {
userService.createAccount(object);
} catch (IllegalArgumentException e) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
}
return ResponseEntity.ok("Account was added successfully");
}
userservice.java
public void createAccount(Map accountObject) throws Exception {
logger.trace("Entering createAccount(). account=" +accountObject);
User user = new User( ??? );
userRepository.save(user);
}
< /code>
Я думал о создании нового конструктора в user.java, который отображает каждый мапенток на поле, но мне было интересно, есть ли лучший подход? < /p>
public User(Map fieldsMapping) {
this(
getValue(fieldsMapping, "username", String.class),
getValue(fieldsMapping, "last_name", String.class),
getValue(fieldsMapping, "first_name", String.class),
);
}
// Helper method for type-safe value extraction.
private static T getValue(Map map, String key, Class clazz) {
Object value = map.get(key);
if (value == null) {
return null;
}
return clazz.cast(value);
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... m-raw-json
Spring Boot: Создание объектов JPA из RAW JSON ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Рефакторинг DB::raw() в DB::raw()->getValue(DB::connection()->getQueryGrammar()) в Laravel 10
Anonymous » » в форуме Php - 0 Ответы
- 131 Просмотры
-
Последнее сообщение Anonymous
-