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

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.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Entity
@Table(name = "GAMECLIENTS")
@ -21,8 +22,8 @@ public class GameClient {
@Column(name = "balance")
private Integer balance;
@ManyToMany(mappedBy = "gameClients", fetch= FetchType.EAGER)
private List<Tank> tanks;
@OneToMany(fetch = FetchType.EAGER)
private List<Tank> tanks = new ArrayList<>();
public GameClient(){ }
@ -30,7 +31,6 @@ public class GameClient {
this.nickName = nickName;
this.email = email;
this.balance = balance;
tanks = new ArrayList<>();
}
public Long getId(){
@ -65,8 +65,8 @@ public class GameClient {
return tanks;
}
public void setTanks(List<Tank> tanks){
this.tanks = tanks;
public void setTanks(Tank tank){
this.tanks.add(tank);
}
//метод для сравнения
@ -96,7 +96,8 @@ public class GameClient {
", nickName='" + nickName + '\'' +
", email='" + email + '\'' +
", 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 java.util.*;
import java.util.stream.Collectors;
@Entity
@Table(name = "NATIONS")
@ -13,8 +14,8 @@ public class Nation {
@Column(name = "nation")
private String nation;
@OneToMany(mappedBy ="nation", cascade = CascadeType.MERGE,fetch = FetchType.EAGER)
private List<Tank> tanks = new ArrayList<>();
@OneToMany(mappedBy = "nation", fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
private List<Tank> tanksOfThisNation = new ArrayList<>();
public Nation() {
}
@ -37,13 +38,12 @@ public class Nation {
this.nation = nation;
}
public List<Tank> getTanks(){
return tanks;
public List<Tank> getTanksOfThisNation(){
return tanksOfThisNation;
}
public void addNewTank(Tank tank) {
tanks.add(tank);
tank.setNation(this);
public void setTanksOfThisNation(Tank newTank){
this.tanksOfThisNation.add(newTank);
}
//метод для сравнения
@ -70,6 +70,9 @@ public class Nation {
public String toString() {
return "Nation{" +
"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 java.util.Objects;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Entity
@Table(name = "TANKS")
@ -13,25 +10,20 @@ public class Tank {
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@Column(name = "name")
@Column(nullable = false)
private String name;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "nation")
private Nation nation;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "tankLevel")
private TankLevel tankLevel;
@Column(name = "cost")
@Column(nullable = false)
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() {
}
@ -40,7 +32,6 @@ public class Tank {
this.nation = nation;
this.tankLevel = tankLevel;
this.cost = cost;
gameClients = new ArrayList<>();
}
public Long getId(){
@ -79,28 +70,6 @@ public class Tank {
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
public boolean equals(Object o) {
if (this == o) return true;
@ -108,7 +77,7 @@ public class Tank {
if (!(o instanceof Tank tank)) return false;
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());
}
@ -123,10 +92,10 @@ public class Tank {
return "Tank{" +
"id=" + id +
", name='" + name + '\'' +
", nation='" + nation + '\'' +
", level='" + tankLevel + '\'' +
", nation='" + nation.getNation() + '\'' +
", level='" + tankLevel.getLevel() + '\'' +
", 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)
private int level;
@OneToMany(mappedBy = "tankLevel", cascade = CascadeType.MERGE, fetch = FetchType.EAGER)
private List<Tank> tanksOfThisLevel = new ArrayList<>();
public TankLevel() {
}
@ -37,15 +34,6 @@ public class TankLevel {
this.level = level;
}
public List<Tank> getTanks(){
return tanksOfThisLevel;
}
public void addNewTank(Tank tank) {
tanksOfThisLevel.add(tank);
tank.setLevel(this);
}
//метод для сравнения
@Override
public boolean equals(Object o) {
@ -73,3 +61,4 @@ public class TankLevel {
", level='" + level + '}';
}
}