У меня есть две сущности:
- Trader.java
- Stockmarket.java
Я использую аннотацию @ManyToMany и у меня работает сохранение Trader, внутри которого содержится список Stockmarket, но не работает сохранение Stockmarket, в котором есть список трейдеров.
Trader.java
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "trader")
public class Trader {
@Id
@GeneratedValue
@Column(name = "trader_id")
private Long id;
@Column(name = "trader_name")
private String traderName;
@ManyToMany(cascade = { CascadeType.ALL })
@JoinTable(name = "TRADER_STOCKMARKET",
joinColumns = { @JoinColumn(name = "trader_id") },
inverseJoinColumns = { @JoinColumn(name = "stockmarket_id") })
private List<Stockmarket> stockmarket;
}
Stockmarket.java
import lombok.*;
import javax.persistence.*;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity
@Table(name = "stockmarket")
public class Stockmarket{
@Id
@GeneratedValue
@Column(name = "stockmarket_id")
private Long id;
@Column(name = "stockmarket_name")
private String stockmarketName;
@ManyToMany(mappedBy="stockmarket")
private List<Trader> traders;
}
Контроллер:
(В MySQL уже есть 2 трейдера и 2 биржи.)
Stockmarket stockmarket3 = new Stockmarket();
stockmarket3.setStockmarketName("Marvel");
List<Trader> allTraders = manyToManyBiService.findAllTraders();
System.out.println("\n\n\n finally " + allTraders.toString() + "\n\n\n ");
stockmarket3.setTraders(allTraders);
manyToManyBiService.saveStockmarket(stockmarket3);
Дополнительные вещи, если помогут в решении проблемы
ManyToManyBiService.java:
@Service
public class ManyToManyBiService {
@Autowired
StockmarketRepository stockmarketRepository;
@Autowired
TraderRepository traderRepository;
public void saveTrader(Trader trader){
traderRepository.save(trader);
}
public void saveStockmarket(Stockmarket stockmarket){
stockmarketRepository.save(stockmarket);
}
public Stockmarket findByNameStockmarket(String name){
return stockmarketRepository.findByStockmarketName(name);
}
public List<Stockmarket> findAllStockmarket(){
return stockmarketRepository.findAll();
}
public List<Trader> findAllTraders(){
return traderRepository.findAll();
}
}
StockmarketRepository и TraderRepository - Это интерфей, которые extend CrudRepository.
CascadeType.ALLи@JoinTableя написал вtrader.java– Antonio112009 Dec 04 '19 at 12:09