使用java存储库更新列表属性

ki0zmccv  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(250)

我有一个名为autonomo的对象,它有一个合格建议列表(propostatselegiveis),它只显示与autonomo具有相同类别/分类名称的建议,例如,如果他是园丁,则只有属于园丁类别的建议才会添加到该自治列表中。每次创建提案/提案时,它都会试图通知拥有此类/类别的自治机构
这里的问题是,虽然autonomo类中的列表实际上已更新,但在我的存储库中它不会更新!
自主类

public class Autonomo extends Perfil {

@OneToMany(mappedBy = "categoria")
List<Proposta> propostasElegiveis = new ArrayList<Proposta>();

@Transactional
public void adicionaProposta(Proposta proposta){
    propostasElegiveis.add(proposta);
}

建议类

@Entity
@Table(name = "proposta")
public class Proposta{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @OneToOne
    @JoinColumn(name = "categoria_id",insertable = true, updatable = false)
    private Categoria categoria;

提案服务

@Service
public class PropostaService {

    @Autowired
    private PropostaRepository propostaRepository;

    @Autowired
    private PerfisRepository perfisRepository;

    @Transactional
    public ResponseEntity cadastrarProposta(Proposta novaProposta){
        perfisRepository.saveAll(notificaElegiveis(novaProposta.getCategoria(), novaProposta));
        perfisRepository.flush();
        propostaRepository.save(novaProposta);
        return ResponseEntity.ok().build();
    }

private List<Autonomo> notificaElegiveis(Categoria categoria, Proposta proposta){
    List<Autonomo> autonomos = new ArrayList<>();
    for (Perfil autonomo : perfisRepository.findAllByCategoriaAutonomo(categoria.getNome())){
        autonomos.add((Autonomo) autonomo);
    }
    for (Autonomo autonomo: autonomos) {
        autonomo.adicionaProposta(proposta);
        perfisRepository.save(autonomo);
    }
    return autonomos;
}

perfil存储库(autonomo是perfil的一个子类)

public interface PerfisRepository extends JpaRepository<Perfil, Integer> {

    @Query(value = "SELECT * FROM usuario as a, categoria as c WHERE a.tipo_Perfil = 'autonomo' AND a.ID_CATEGORIA = C.ID AND c.nome like ?1 ", nativeQuery = true)
    List<Perfil> findAllByCategoriaAutonomo(String nomeCategoria);
}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题