admin管理员组文章数量:1123347
I have theses classes and this method public CaixaMovimentos createCaixaMovimentos(CaixaMovimentos caixaMovimentos) dont work to save id master into details fields.
i tried severas tips and dont work, is are ok joined.
in console log id ok into classes: id novo 4 id 4 id novo 4.
all classes are listed bellow
@Entity(name = "caixa")
public class Caixa {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public String getEmpresaCnpj() {
return empresaCnpj;
}
public void setEmpresaCnpj(String empresaCnpj) {
this.empresaCnpj = empresaCnpj;
}
@JoinColumn(name = "empresa_cnpj", referencedColumnName = "cnpj", foreignKey = @ForeignKey(name = "fk_caixa_empresa_cnpj"))
private String empresaCnpj;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name = "nome")
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity(name = "caixa_meios_pagamentos")
public class CaixaMeiosPagamentos {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "caixa_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "meios_pagtos_caixa"))
private Caixa caixa;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "caixa_mov_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "meios_pagtos_caixa_mov"))
private CaixaMovimentos caixaMovimentos;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public BigDecimal getValorTotal() {
return valorTotal;
}
public void setValorTotal(BigDecimal valorTotal) {
this.valorTotal = valorTotal;
}
@Column( name = "descricao", nullable = false)
private String descricao;
@Column(name = "valor_total")
private BigDecimal valorTotal;
public Caixa getCaixa() {
return caixa;
}
public void setCaixa(Caixa caixa) {
this.caixa = caixa;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public CaixaMovimentos getCaixaMovimentos() {
return caixaMovimentos;
}
public void setCaixaMovimentos(CaixaMovimentos caixaMovimentos) {
this.caixaMovimentos = caixaMovimentos;
}
}
@Service
public class MovimentosService {
private final MovimentosRepository movimentosRepository;
private final CaixaService caixaService;
public MovimentosService(MovimentosRepository movimentosRepository, CaixaService caixaService) {
this.movimentosRepository = movimentosRepository;
this.caixaService = caixaService;
}
public List<CaixaMovimentos> getAllCaixasMovimentos() {
return movimentosRepository.findAll();
}
public Optional<CaixaMovimentos> getCaixaMovimentosById(Long id) {
return movimentosRepository.findById(id);
}
public List<CaixaMovimentos>getCaixaMovimentosByData(LocalDate dataInicial , LocalDate dataFinal) {
List <CaixaMovimentos> caixaMovimentos = movimentosRepository.findByDataMovBetween(dataInicial, dataFinal);
return caixaMovimentos;
}
public CaixaMovimentos createCaixaMovimentos(CaixaMovimentos caixaMovimentos){
Optional<Caixa> existingCaixa = caixaService.findCaixaByCnpj(caixaMovimentos.getCaixa().getEmpresaCnpj());
CaixaMovimentos newCaixaMov = new CaixaMovimentos();
newCaixaMov.setDataMov(caixaMovimentos.getDataMov());
newCaixaMov.setNomeUsu(caixaMovimentos.getNomeUsu());
if( existingCaixa.isPresent() ) {
System.out.println("id " +existingCaixa.get().getId() );
newCaixaMov.setCaixa(existingCaixa.get());
}else {
Caixa newCaixa = caixaService.createCaixa(caixaMovimentos.getCaixa());
newCaixaMov.setCaixa(newCaixa);
}
newCaixaMov.setCaixaMeiosPagamentos(caixaMovimentos.getCaixaMeiosPagamentos());
System.out.println("id novo " + newCaixaMov.getCaixa().getId() );
return movimentosRepository.save(newCaixaMov);
};
public Optional<CaixaMovimentos> updateCaixaMovimentos(long id, CaixaMovimentos caixaMovimentos) {
return movimentosRepository.findById(id).map(movimento ->{
movimento.setNomeUsu(caixaMovimentos.getNomeUsu());
movimento.setCaixa(caixaMovimentos.getCaixa());
movimento.setDataMov(caixaMovimentos.getDataMov());
movimento.setCaixaMeiosPagamentos( caixaMovimentos.getCaixaMeiosPagamentos());
return movimentosRepository.save(movimento);
}) ;
}
public boolean deteleCaixaMovimentos(long id) {
return movimentosRepository.findById(id).map( existingMovimento ->{
movimentosRepository.delete(existingMovimento);
return true;
}).orElse(false);
}
}
@Entity(name = "caixa_mov")
public class CaixaMovimentos {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(referencedColumnName = "id", foreignKey = @ForeignKey(name = "caixa_mov_caixa"))
private Caixa caixa;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Caixa getCaixa() {
return caixa;
}
public void setCaixa(Caixa caixa) {
this.caixa = caixa;
}
public LocalDate getDataMov() {
return dataMov;
}
public void setDataMov(LocalDate dataMov) {
this.dataMov = dataMov;
}
@Column(name = "data_mov")
private LocalDate dataMov;
public String getNomeUsu() {
return nomeUsu;
}
public void setNomeUsu(String nomeUsu) {
this.nomeUsu = nomeUsu;
}
@Column(name = "nome_usu")
private String nomeUsu;
public Set<CaixaMeiosPagamentos> getCaixaMeiosPagamentos() {
return caixaMeiosPagamentos;
}
public void setCaixaMeiosPagamentos(Set<CaixaMeiosPagamentos> caixaMeiosPagamentos) {
this.caixaMeiosPagamentos = caixaMeiosPagamentos;
}
@OneToMany(mappedBy = "caixaMovimentos", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
Set<CaixaMeiosPagamentos> caixaMeiosPagamentos;
}
I have theses classes and this method public CaixaMovimentos createCaixaMovimentos(CaixaMovimentos caixaMovimentos) dont work to save id master into details fields.
i tried severas tips and dont work, is are ok joined.
in console log id ok into classes: id novo 4 id 4 id novo 4.
all classes are listed bellow
@Entity(name = "caixa")
public class Caixa {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
public String getEmpresaCnpj() {
return empresaCnpj;
}
public void setEmpresaCnpj(String empresaCnpj) {
this.empresaCnpj = empresaCnpj;
}
@JoinColumn(name = "empresa_cnpj", referencedColumnName = "cnpj", foreignKey = @ForeignKey(name = "fk_caixa_empresa_cnpj"))
private String empresaCnpj;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@Column(name = "nome")
private String nome;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
@Entity(name = "caixa_meios_pagamentos")
public class CaixaMeiosPagamentos {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "caixa_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "meios_pagtos_caixa"))
private Caixa caixa;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "caixa_mov_id", referencedColumnName = "id", foreignKey = @ForeignKey(name = "meios_pagtos_caixa_mov"))
private CaixaMovimentos caixaMovimentos;
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public BigDecimal getValorTotal() {
return valorTotal;
}
public void setValorTotal(BigDecimal valorTotal) {
this.valorTotal = valorTotal;
}
@Column( name = "descricao", nullable = false)
private String descricao;
@Column(name = "valor_total")
private BigDecimal valorTotal;
public Caixa getCaixa() {
return caixa;
}
public void setCaixa(Caixa caixa) {
this.caixa = caixa;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public CaixaMovimentos getCaixaMovimentos() {
return caixaMovimentos;
}
public void setCaixaMovimentos(CaixaMovimentos caixaMovimentos) {
this.caixaMovimentos = caixaMovimentos;
}
}
@Service
public class MovimentosService {
private final MovimentosRepository movimentosRepository;
private final CaixaService caixaService;
public MovimentosService(MovimentosRepository movimentosRepository, CaixaService caixaService) {
this.movimentosRepository = movimentosRepository;
this.caixaService = caixaService;
}
public List<CaixaMovimentos> getAllCaixasMovimentos() {
return movimentosRepository.findAll();
}
public Optional<CaixaMovimentos> getCaixaMovimentosById(Long id) {
return movimentosRepository.findById(id);
}
public List<CaixaMovimentos>getCaixaMovimentosByData(LocalDate dataInicial , LocalDate dataFinal) {
List <CaixaMovimentos> caixaMovimentos = movimentosRepository.findByDataMovBetween(dataInicial, dataFinal);
return caixaMovimentos;
}
public CaixaMovimentos createCaixaMovimentos(CaixaMovimentos caixaMovimentos){
Optional<Caixa> existingCaixa = caixaService.findCaixaByCnpj(caixaMovimentos.getCaixa().getEmpresaCnpj());
CaixaMovimentos newCaixaMov = new CaixaMovimentos();
newCaixaMov.setDataMov(caixaMovimentos.getDataMov());
newCaixaMov.setNomeUsu(caixaMovimentos.getNomeUsu());
if( existingCaixa.isPresent() ) {
System.out.println("id " +existingCaixa.get().getId() );
newCaixaMov.setCaixa(existingCaixa.get());
}else {
Caixa newCaixa = caixaService.createCaixa(caixaMovimentos.getCaixa());
newCaixaMov.setCaixa(newCaixa);
}
newCaixaMov.setCaixaMeiosPagamentos(caixaMovimentos.getCaixaMeiosPagamentos());
System.out.println("id novo " + newCaixaMov.getCaixa().getId() );
return movimentosRepository.save(newCaixaMov);
};
public Optional<CaixaMovimentos> updateCaixaMovimentos(long id, CaixaMovimentos caixaMovimentos) {
return movimentosRepository.findById(id).map(movimento ->{
movimento.setNomeUsu(caixaMovimentos.getNomeUsu());
movimento.setCaixa(caixaMovimentos.getCaixa());
movimento.setDataMov(caixaMovimentos.getDataMov());
movimento.setCaixaMeiosPagamentos( caixaMovimentos.getCaixaMeiosPagamentos());
return movimentosRepository.save(movimento);
}) ;
}
public boolean deteleCaixaMovimentos(long id) {
return movimentosRepository.findById(id).map( existingMovimento ->{
movimentosRepository.delete(existingMovimento);
return true;
}).orElse(false);
}
}
@Entity(name = "caixa_mov")
public class CaixaMovimentos {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(referencedColumnName = "id", foreignKey = @ForeignKey(name = "caixa_mov_caixa"))
private Caixa caixa;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Caixa getCaixa() {
return caixa;
}
public void setCaixa(Caixa caixa) {
this.caixa = caixa;
}
public LocalDate getDataMov() {
return dataMov;
}
public void setDataMov(LocalDate dataMov) {
this.dataMov = dataMov;
}
@Column(name = "data_mov")
private LocalDate dataMov;
public String getNomeUsu() {
return nomeUsu;
}
public void setNomeUsu(String nomeUsu) {
this.nomeUsu = nomeUsu;
}
@Column(name = "nome_usu")
private String nomeUsu;
public Set<CaixaMeiosPagamentos> getCaixaMeiosPagamentos() {
return caixaMeiosPagamentos;
}
public void setCaixaMeiosPagamentos(Set<CaixaMeiosPagamentos> caixaMeiosPagamentos) {
this.caixaMeiosPagamentos = caixaMeiosPagamentos;
}
@OneToMany(mappedBy = "caixaMovimentos", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
Set<CaixaMeiosPagamentos> caixaMeiosPagamentos;
}
Share
Improve this question
asked 13 hours ago
GilmarGilmar
415 bronze badges
0
1 Answer
Reset to default 0You have to review cascade
properties between CaixaMovimentos
and Caixa
entries, by removing cascade = CascadeType.ALL
from @ManyToOne
in CaixaMovimentos
and instead add @OneToMany(cascade = CascadeType.ALL)
to Caixa
.
More explanation you can find here
@Entity(name = "caixa_mov")
public class CaixaMovimentos {
//other fileds
@ManyToOne
@JoinColumn(referencedColumnName = "id", foreignKey = @ForeignKey(name = "caixa_mov_caixa"))
private Caixa caixa;
//other fields , getters, setters
@Entity(name = "caixa")
public class Caixa {
//other fileds
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
private List<CaixaMovimentos> caixaMovimentos = new ArrayList<>();
//other fields , getters, setters
本文标签: Spring boot dont save id master into details fieldsStack Overflow
版权声明:本文标题:Spring boot dont save id master into details fields - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736565301a1944694.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论