Правка моделей.

This commit is contained in:
Programmist73 2023-04-19 19:35:44 +04:00
parent 8a23075ac6
commit 973e2c6a16
4 changed files with 29 additions and 67 deletions

View File

@ -4,6 +4,7 @@ import javax.persistence.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
@Entity @Entity
@Table(name = "GAMECLIENTS") @Table(name = "GAMECLIENTS")
@ -21,8 +22,8 @@ public class GameClient {
@Column(name = "balance") @Column(name = "balance")
private Integer balance; private Integer balance;
@ManyToMany(mappedBy = "gameClients", fetch= FetchType.EAGER) @OneToMany(fetch = FetchType.EAGER)
private List<Tank> tanks; private List<Tank> tanks = new ArrayList<>();
public GameClient(){ } public GameClient(){ }
@ -30,7 +31,6 @@ public class GameClient {
this.nickName = nickName; this.nickName = nickName;
this.email = email; this.email = email;
this.balance = balance; this.balance = balance;
tanks = new ArrayList<>();
} }
public Long getId(){ public Long getId(){
@ -65,8 +65,8 @@ public class GameClient {
return tanks; return tanks;
} }
public void setTanks(List<Tank> tanks){ public void setTanks(Tank tank){
this.tanks = tanks; this.tanks.add(tank);
} }
//метод для сравнения //метод для сравнения
@ -96,7 +96,8 @@ public class GameClient {
", nickName='" + nickName + '\'' + ", nickName='" + nickName + '\'' +
", email='" + email + '\'' + ", email='" + email + '\'' +
", balance='" + balance + '\'' + ", balance='" + balance + '\'' +
", tanks count='" + tanks.size() + '\'' + ", tanks='" + tanks.stream().map(Object::toString).collect(Collectors.joining(", ")) + '\'' +
'}'; '}';
} }
} }

View File

@ -2,6 +2,7 @@ package premium_store.model;
import javax.persistence.*; import javax.persistence.*;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Entity @Entity
@Table(name = "NATIONS") @Table(name = "NATIONS")
@ -13,8 +14,8 @@ public class Nation {
@Column(name = "nation") @Column(name = "nation")
private String nation; private String nation;
@OneToMany(mappedBy ="nation", cascade = CascadeType.MERGE,fetch = FetchType.EAGER) @OneToMany(mappedBy = "nation", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private List<Tank> tanks = new ArrayList<>(); private List<Tank> tanksOfThisNation = new ArrayList<>();
public Nation() { public Nation() {
} }
@ -37,13 +38,12 @@ public class Nation {
this.nation = nation; this.nation = nation;
} }
public List<Tank> getTanks(){ public List<Tank> getTanksOfThisNation(){
return tanks; return tanksOfThisNation;
} }
public void addNewTank(Tank tank) { public void setTanksOfThisNation(Tank newTank){
tanks.add(tank); this.tanksOfThisNation.add(newTank);
tank.setNation(this);
} }
//метод для сравнения //метод для сравнения
@ -70,6 +70,9 @@ public class Nation {
public String toString() { public String toString() {
return "Nation{" + return "Nation{" +
"id=" + id + "id=" + id +
", nation='" + nation + '}'; ", nation='" + nation + '\'' +
", tanksOfThisNation='" + tanksOfThisNation.stream().map(Object::toString).collect(Collectors.joining(", ")) + '\'' +
'}';
} }
} }

View File

@ -2,9 +2,6 @@ package premium_store.model;
import javax.persistence.*; import javax.persistence.*;
import java.util.Objects; import java.util.Objects;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Entity @Entity
@Table(name = "TANKS") @Table(name = "TANKS")
@ -13,25 +10,20 @@ public class Tank {
@GeneratedValue(strategy = GenerationType.AUTO) @GeneratedValue(strategy = GenerationType.AUTO)
private Long id; private Long id;
@Column(name = "name") @Column(nullable = false)
private String name; private String name;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "nation")
private Nation nation; private Nation nation;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE) @ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tankLevel")
private TankLevel tankLevel; private TankLevel tankLevel;
@Column(name = "cost") @Column(nullable = false)
private int cost; private int cost;
//реализация двунаправленной связи многие-ко-многим
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "tanks_clients",
joinColumns = @JoinColumn(name = "tank_fk"),
inverseJoinColumns = @JoinColumn(name = "client_fk"))
private List<GameClient> gameClients;
public Tank() { public Tank() {
} }
@ -40,7 +32,6 @@ public class Tank {
this.nation = nation; this.nation = nation;
this.tankLevel = tankLevel; this.tankLevel = tankLevel;
this.cost = cost; this.cost = cost;
gameClients = new ArrayList<>();
} }
public Long getId(){ public Long getId(){
@ -79,28 +70,6 @@ public class Tank {
this.nation = nation; this.nation = nation;
} }
public List<GameClient> getClients() {
return gameClients;
}
public void setClients(List<GameClient> gameClients) {
this.gameClients = gameClients;
}
public void addClient(GameClient newGameClient){
if (gameClients == null){
this.gameClients = new ArrayList<>();
}
if (!gameClients.contains(newGameClient))
this.gameClients.add(newGameClient);
}
public void removeClient(GameClient remGameClient){
if (gameClients.contains(remGameClient))
this.gameClients.remove(remGameClient);
}
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
@ -108,7 +77,7 @@ public class Tank {
if (!(o instanceof Tank tank)) return false; if (!(o instanceof Tank tank)) return false;
return Objects.equals(getId(), tank.getId()) && Objects.equals(getName(), tank.getName()) return Objects.equals(getId(), tank.getId()) && Objects.equals(getName(), tank.getName())
&& Objects.equals(getCost(), tank.getCost()) && Objects.equals(getClients(), tank.getClients()) && Objects.equals(getCost(), tank.getCost())
&& Objects.equals(getLevel(), tank.getLevel()); && Objects.equals(getLevel(), tank.getLevel());
} }
@ -123,10 +92,10 @@ public class Tank {
return "Tank{" + return "Tank{" +
"id=" + id + "id=" + id +
", name='" + name + '\'' + ", name='" + name + '\'' +
", nation='" + nation + '\'' + ", nation='" + nation.getNation() + '\'' +
", level='" + tankLevel + '\'' + ", level='" + tankLevel.getLevel() + '\'' +
", cost='" + cost + '\'' + ", cost='" + cost + '\'' +
", clients='" + gameClients.stream().map(Object::toString).collect(Collectors.joining(", ")) + '\'' +
'}'; '}';
} }
} }

View File

@ -13,9 +13,6 @@ public class TankLevel {
@Column(name = "level", nullable = false) @Column(name = "level", nullable = false)
private int level; private int level;
@OneToMany(mappedBy = "tankLevel", cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
private List<Tank> tanksOfThisLevel = new ArrayList<>();
public TankLevel() { public TankLevel() {
} }
@ -37,15 +34,6 @@ public class TankLevel {
this.level = level; this.level = level;
} }
public List<Tank> getTanks(){
return tanksOfThisLevel;
}
public void addNewTank(Tank tank) {
tanksOfThisLevel.add(tank);
tank.setLevel(this);
}
//метод для сравнения //метод для сравнения
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
@ -73,3 +61,4 @@ public class TankLevel {
", level='" + level + '}'; ", level='" + level + '}';
} }
} }