Я реализую RESTFul сервис, позволяющий возвращать информацию о пользователях. У меня есть два Entity, которые цепляются из БД.
Первая сущность, описывающая пользователя, берется из таблицы User и выглядит следующим образом:
import javax.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
@Id
@Column(name = "code")
Long id;
Long pos;
Long sapid;
String username;
String firstName;
String lastName;
String middleName;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "code", insertable = false, updatable = false)
Point point;
}
Следующая сущность описывает отделение, в котором работает указанный пользователь, берется из таблицы Point:
import javax.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Data
public class Point {
@Id
@Column(name = "code")
Long id;
@Column(name = "name")
String location;
String zip;
String regionCode;
String city;
String street;
String house;
String info;
}
Моей задачей является возврат JSON-а следующего содержания:
{
“id”:2356,
“user”:”user”,
“location”:”отделение1”
}
Начав реализовывать DTO для возврата JSON я столкнулся с проблемой: при реализованной мной связи в Entity User в поле Point записывается целая привязанная сущность.
{
"id": 41,
"user": "user",
"point": {
"zip": "zip",
"location" : "location1"
"regionCode": "123",
"city": "city",
"street": "str",
"house": "h2",
"info": "some info"
}
}
Вопрос: Как я должен преобразовывать сущность в процессе маппинга в дто, чтобы получить JSON требуемого мне формата? (цеплять из point только location, а не полную информацию о отделении). Хотелось бы избегать нативных SQL запросов и работать именно с объектным представлением, спасибо.
Любой метод с префиксом get будет обработан сериалайзером
class DTO{
// сам поинт скрыт
@JsonIgnore
private Point point;
// будто бы такое поле существует
String getLocation(){
return point.getLocation();
}
...
}
А вообще, не передавайте сущности целиком в ДТО, если не хотите видетьполное содержание. Если вы хотите видеть там три поля, то создавай ДТо ровно с тремя полями
class DTO{
private Long id;
private String user;
private String location;
...
}
dto.setId(42);
dto.setUser("user");
dto.setLocation("Some location");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть программа, которой подается на вход 2 натуральных числа: размеры таблицы (а*b) и строка вида ADD (число) (число)Оба числа являются координатами...
У меня есть отдельный файл с картинками под названием src, в котором файл img и там картинкиФайл Src я назначил права Resources Root
Почему во всех примерах, я вижу вот такое: Integer a = new Integer(242); - хотя этот вариант деприкейтед, в идее прям зачеркивает этот кодПочему никто не показывает...
Как в зависимости от выбранной опции тега select, содержащей data-id, привязать его к кнопке, те при выборе 1, кнопка получала data-id = 1 и тд