Есть 2 обьекта
@Entity
@Table(name = "real_estate", schema="data1c")
@Proxy(lazy = false)
public class RealEstate {
@Id
@Column(name = "id")
UUID id;
@Column(name = "name")
String name;
@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinColumn(name="city", nullable = false)
private City city;
@Column(name = "website")
String website;
@Column(name = "logo")
String logo;
@Column(name = "logo_web")
String logoWeb;
@Column(name = "foto")
String foto;
@Column(name = "foto_web")
String fotoWeb;
@Column(name = "longitude")
Double longitude;
@Column(name = "latitude")
Double latitude;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public City getCity() {
return city;
}
public void setCity(City city) {
this.city = city;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public String getLogo() {
return logo;
}
public void setLogo(String logo) {
this.logo = logo;
}
public String getLogoWeb() {
return logoWeb;
}
public void setLogoWeb(String logoWeb) {
this.logoWeb = logoWeb;
}
public String getFoto() {
return foto;
}
public void setFoto(String foto) {
this.foto = foto;
}
public String getFotoWeb() {
return fotoWeb;
}
public void setFotoWeb(String fotoWeb) {
this.fotoWeb = fotoWeb;
}
public Double getLongitude() {
return longitude;
}
public void setLongitude(Double longitude) {
this.longitude = longitude;
}
public Double getLatitude() {
return latitude;
}
public void setLatitude(Double latitude) {
this.latitude = latitude;
}
@Override
public String toString() {
return "RealEstate{" +
"id=" + id +
", name='" + name + '\'' +
", city=" + city +
", website='" + website + '\'' +
", logo='" + logo + '\'' +
", logoWeb='" + logoWeb + '\'' +
", foto='" + foto + '\'' +
", fotoWeb='" + fotoWeb + '\'' +
", longitude=" + longitude +
", latitude=" + latitude +
'}';
}
}
Обьект City:
@Entity
@Table(name = "city", schema="data1c")
@Proxy(lazy = false)
public class City {
@Id
@Column(name = "id")
private UUID id;
@Column(name = "name")
private String name;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "City{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
мне нужно забрать данные с апи и залить в базу.
Пример json такой :
{
"id": "c67ec057-ea71-11e5-b9a5-b4b52f5405e7",
"name": "Проект очереди 1",
"city": "a4874e7c-2906-11e9-80d9-00155d101f25",
"website": "",
"logo": "",
"logoWeb": "",
"foto": "",
"fotoWeb": "",
"longitude": 0,
"latitude": 0
}
Проблема в том что city приходит не как обьект а как id(идентификатор). как мне сериализовать? Помогите
Пытаюсь примерно так:
public RealEstate serializerealrest() throws IOException {
String body = "{\n" +
" \"id\": \"c67ec057-ea71-11e5-b9a5-b4b52f5405e7\",\n" +
" \"name\": \"Проект очереди 1\",\n" +
" \"city\": \"a4874e7c-2906-11e9-80d9-00155d101f25\",\n" +
" \"logo\": \"\",\n" +
" \"logoWeb\": \"\",\n" +
" \"foto\": \"\",\n" +
" \"fotoWeb\": \"\",\n" +
" \"longitude\": 0,\n" +
" \"latitude\": 0\n" +
" }";
RealEstate realEstate = mapper.readValue(body, new TypeReference<RealEstate>(){});
return realEstate;
}
есть множество вариантов. например, достаточно проставить специальные аннотации, которые укажут сериализатору, что именно и куда парсить. для юида города добавим отдельное поле, которое не будем сохранять в бд, однако покажем его нашему сериализатору. и откройте для себя ломбок, сколько можно писать геттры, сеттеры и прочую ерунду? зависимость для градла: compileOnly 'org.projectlombok:lombok:1.18.8'
выглядит это так
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.UUID;
import javax.persistence.*;
@Entity
@Table(name = "real_estate", schema="data1c")
@Proxy(lazy = false)
@lombok.Data
@lombok.experimental.FieldDefaults(level = lombok.AccessLevel.PRIVATE)
public class RealEstate {
@Id
@Column(name = "id")
@JsonProperty(value = "id")
UUID id;
@JsonProperty(value = "name")
@Column(name = "name")
String name;
@JsonProperty(value = "website")
@Column(name = "website")
String website;
@JsonProperty(value = "logo")
@Column(name = "logo")
String logo;
@JsonProperty(value = "logoWeb")
@Column(name = "logo_web")
String logoWeb;
@JsonProperty(value = "foto")
@Column(name = "foto")
String foto;
@JsonProperty(value = "fotoWeb")
@Column(name = "foto_web")
String fotoWeb;
@JsonProperty(value = "longitude")
@Column(name = "longitude")
Double longitude;
@JsonProperty(value = "latitude")
@Column(name = "latitude")
Double latitude;
@JsonIgnore
@ManyToOne(cascade={CascadeType.PERSIST, CascadeType.MERGE}, fetch = FetchType.EAGER)
@JoinColumn(name="city", nullable = false)
private City city;
@JsonProperty(value = "city")
@Transient
private UUID cityId;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В хранимой процедуре MySQL есть две переменныеВ одной хранится в формате TimeStamp время регистрации,например '2020-01-15 14:30:33'
Какая бд лучше справиться с хранением больших таблиц, +30-50GИз вариантов MySQL 8