【问题标题】:Need to get Spring to return MySQL View data back to REACT front end需要让 Spring 将 MySQL View 数据返回给 REACT 前端
【发布时间】:2021-12-23 10:18:09
【问题描述】:

我正在尝试让我的 Spring MySQL 后端通过 AXIOS 返回一个多表视图(不是单个表)到我的 REACT 前端。

我正在使用 POSTMAN (http://localhost:8080/api/v1/cpysiteassetview) 测试我的后端

我收到来自 SPRING 的错误消息和来自 POSTMAN(下)的长错误消息。

我很接近,但在某个地方出错了,我希望对此更熟悉的人可以阐明并解释我哪里出错了。

这里是 VIEW\MODEL\REPOSITORY\CONTROLLER。

...

        CREATE 
            ALGORITHM = UNDEFINED 
            DEFINER = `root`@`localhost` 
            SQL SECURITY DEFINER
        VIEW `cpysiteasset` AS
            SELECT 
                `cpymaster`.`cpymasterid` AS `cpymasterid`,
                `cpymaster`.`cpymastercode` AS `cpymastercode`,
                `cpymaster`.`cpymastername` AS `cpymastername`,
                `sitemaster`.`sitemasterid` AS `sitemasterid`,
                `sitemaster`.`sitemastercode` AS `sitemastercode`,
                `sitemaster`.`sitemastername` AS `sitemastername`,
                `assets`.`assetsid` AS `assetsid`,
                `assets`.`assetsidentifier` AS `assetsidentifier`,
                `assets`.`assetsname` AS `assetsname`
            FROM
                ((`cpymaster`
                JOIN `sitemaster` ON = `cpymaster`.`cpymasterid`)))
                JOIN `assets` ON ((`assets`.`sitemaster_sitemasterid` = `sitemaster`.`sitemasterid`)))
            ORDER BY `sitemaster`.`sitemastercode` , `assets`.`assetsidentifier`
        
        //MODEL
package net.javaguides.springboot.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Immutable;

@Entity
@Immutable
@Table(name = "`cpysiteassetview`")
public class CpySiteAssetView {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    
    private int cpymasterid;
    private String cpymastercode; 
    private String cpymastername;
    private int sitemasterid;
    private String sitemastercode; 
    private String sitemastername; 
    private int assetsid;
    private String assetsidentifier; 
    private String assetsname;
    
    @Column(name = "cpymasterid")
    public int getCpymasterid() {
        return cpymasterid;
    }
    
    @Column(name = "cpymastercode")
    public String getCpymastercode() {
        return cpymastercode;
    }
    
    @Column(name = "cpymastername")
    public String getCpymastername() {
        return cpymastername;
    }
    
    @Column(name = "sitemasterid")
    public int getSitemasterid() {
        return sitemasterid;
    }
    
    @Column(name = "sitemastercode")
    public String getSitemastercode() {
        return sitemastercode;
    }
    
    @Column(name = "sitemastername")
    public String getSitemastername() {
        return sitemastername;
    }
    
    @Column(name = "assetsid")
    public int getAssetsid() {
        return assetsid;
    }
    
    @Column(name = "assetsidentifier")
    public String getAssetsidentifier() {
        return assetsidentifier;
    }
    
    @Column(name = "assetsname")
    public String getAssetsname() {
        return assetsname;
    }
            
}
        
        //Repository
        package net.javaguides.springboot.repository;
        
        import java.util.List;
        import org.springframework.data.jpa.repository.JpaRepository;
        import org.springframework.stereotype.Repository;
        import net.javaguides.springboot.model.CpySiteAssetView;
        
        @Repository
        public interface CpySiteAssetViewRepository1 extends JpaRepository<CpySiteAssetView, Long>{
            public List<CpySiteAssetView> findAll();
        }
        
        //Controller
        package net.javaguides.springboot.controller;
        
        import java.util.List;
        import org.springframework.beans.factory.annotation.Autowired;
        import org.springframework.web.bind.annotation.CrossOrigin;
        import org.springframework.web.bind.annotation.GetMapping;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.RestController;
        import net.javaguides.springboot.model.CpySiteAssetView;
        import net.javaguides.springboot.repository.CpySiteAssetViewRepository1;
        
        @CrossOrigin(origins = "http://localhost:3000")
        @RestController
        @RequestMapping("/api/v1/")
        public class CpySiteAssetViewController {
        
            @Autowired
            private CpySiteAssetViewRepository1 cpySiteAssetViewRepository1;
            
            //get all 
            @GetMapping("/cpysiteassetview")
            public List<CpySiteAssetView> getAllCpySiteAssetView(){
                return cpySiteAssetViewRepository1.findAll();
            }
        
        }

...

来自 Spring 的错误消息: java.sql.SQLSyntaxErrorException:“字段列表”中的未知列“cpysiteass0_.id”

邮递员的错误信息(第一部分): "error": "内部服务器错误", “trace”:“org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取 ResultSet;SQL [n/a];嵌套异常是 org.hibernate.exception.SQLGrammarException:无法提取 ResultSet\r\n\tat org.springframework。 orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:259)\r\n\tat org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233)\r\n\tat org. springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551)\r\n\tat org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)\r\n\tat org.springframework。 dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)\r\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(Per

【问题讨论】:

  • 我看到你已经回答并调试了同样的问题。我希望你能在这里伸出援手。预先感谢您的关注。 @Janitha Madushan
  • 我看到你已经回答并调试了同样的问题。我希望你能在这里伸出援手。预先感谢您的关注。 @José Luis Condori Jara
  • 我看到你已经回答并调试了同样的问题。我希望你能在这里伸出援手。预先感谢您的关注。 @davidxxx

标签: mysql reactjs spring-mvc view axios


【解决方案1】:

OK..注释掉 //private long id; 现在它可以工作了!!!!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2022-01-26
    • 1970-01-01
    • 2014-09-02
    相关资源
    最近更新 更多