首页 > 解决方案 > 将列表从控制器发送到 ajax 时,未传递公司数据类型值

问题描述

我正在通过接收ajax请求来获取Estmt Entity的所有值,我在控制器中用jpa findallby找到了想要的值

ajax返回列表中包含的值时,ajax没有发送Company数据类型的值有解决办法吗?

控制器

@Controller
@RequestMapping(value = "/api/v1/estmt")
public class EstmtController extends BaseController {

    @Inject
    private EstmtService estmtService;

    @RequestMapping(method = RequestMethod.GET, produces = APPLICATION_JSON)
    public Responses.ListResponse gets(RequestParams<Estmt> requestParams) {
        List<Estmt> list = estmtService.gets(requestParams);
        return Responses.ListResponse.of(list);
    }

    @ResponseBody
    @RequestMapping(method = {RequestMethod.PUT}, produces = APPLICATION_JSON)
    public Long save(@RequestBody List<EstmtDTO> request) {
        Long id = estmtService.saveEstmt(request);
        return id;
    }
}

服务

@Service
public class EstmtService extends BaseService<Estmt, Long> {
    private EstmtRepository estmtRepository;

    @Inject
    public EstmtService(EstmtRepository estmtRepository) {
        super(estmtRepository);
        this.estmtRepository = estmtRepository;
    }

    public List<Estmt> gets(RequestParams<Estmt> requestParams) {
        return estmtRepository.findAllBy();
    }
}

评估实体

@Getter
@DynamicInsert
@DynamicUpdate
@Entity
@Table(name = "ESTMT")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Estmt extends BaseJpaModel<Long> {

    @Id
    @Column(name = "ESTMT_ID", precision = 19, nullable = false)

    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long estmtId;

    @JsonBackReference
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CMP_ID")
    private Company company;

    @Column(name = "ESTMT_DT")
    private LocalDate estmtDt;

    @Column(name = "CAR", length = 100)
    private String car;

    @Override
    public Long getId() {
        return estmtId;
    }
}

公司实体

package com.samin.mes.domain.basicInfo.company;

import com.chequer.axboot.core.code.AXBootTypes;
import com.samin.mes.domain.BaseJpaModel;
import com.samin.mes.domain.basicInfo.company.mtrls.CmpMtrls;
import lombok.*;
import com.chequer.axboot.core.annotations.Comment;
import org.hibernate.annotations.Type;

import javax.persistence.*;
import java.util.List;

@Getter
@Entity
@Table(name = "COMPANY")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class Company extends BaseJpaModel<Long> {

    @Id
    @Column(name = "CMP_ID", precision = 19, nullable = false)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long cmpId;

    @Column(name = "CMP_NM", length = 100, nullable = false)
    private String cmpNm;

    @Column(name = "SEC_CD", length = 20)
    private String secCd;

    @Column(name = "BIZ_NO", length = 20, nullable = false)
    private String bizNo;

    @Column(name = "CEO_NM", length = 100)
    private String ceoNm;

    @Embedded
    private Address address;

    @Column(name = "INDUTY", length = 255)
    private String induty;

    @Column(name = "BIZCND", length = 255)
    private String bizcnd;

    @Column(name = "PHONE", length = 20)
    private String phone;

    @Column(name = "FAX", length = 20)
    private String fax;

    @Column(name = "EMAIL", length = 255)
    private String email;

    @Column(name = "RSPNS", length = 50)
    private String rspns;

    @Column(name = "ETC", columnDefinition = "TEXT")
    private String etc;

    @Column(name = "USE_YN", length = 1, nullable = false)
    @Type(type = "labelEnum")
    private AXBootTypes.Used useYn = AXBootTypes.Used.YES;

    @OneToMany(mappedBy = "company", cascade = CascadeType.ALL, orphanRemoval = true)
    List<CmpMtrls> cmpMtrlsList;

    public Address getAddress() {
        return this.address == null? new Address() : this.address;
    }

    @Override
    public Long getId() { return cmpId; }

    public void addMtrls(CmpMtrls cmpMtrls) {
        cmpMtrlsList.add(cmpMtrls);
        cmpMtrls.setParent(this);
    }
}

估计.js

var fnObj = {};
var ACTIONS = axboot.actionExtend(fnObj, {
    PAGE_SEARCH: function (caller, act, data) {
        axboot.ajax({
            type: "GET",
            url: ["estmt"],
            data: $.extend({}, caller.searchView.getData(), caller.gridView01.getPageData()),
            callback: function (res) {
                console.log("res",res);
                caller.gridView01.setData(res);
            }
        });

        return false;
    },
});

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

标签: javascriptjavaajaxspring-bootjpa

解决方案


推荐阅读