当前位置: 首页 > 知识库问答 >
问题:

如何使用jpa spring boot angular js将数据保存在有两个主键的数据库表中

何星鹏
2023-03-14

这是我的实体

>

  • 我的问题是我不知道为什么我的http请求不能工作
  • 我正在使用ARC应用程序测试requette这是错误
  • “状态”:500,
  • “错误”:“内部服务器错误”,
  • “异常”:“org.springframework.beans.conversionNotSupportedException”,
  • “消息”:“无法将”java.lang.Long“类型的属性值转换为属性”fa“的必需类型”com.projet.pfe.entities.af“;嵌套异常为java.lang.IllegalStateException:无法将”java.lang.Long“类型的值转换为属性”fa“的必需类型”com.projet.pfe.entities.af“:找不到匹配的编辑器或转换策略”,“path”:“/saveactaf/2/333”
    包com.projet.pfe.entities.af“;

    import java.io.Serializable;
    
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.IdClass;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    
    @IdClass(ActiviteAF.class)
    @Entity
    public class ActiviteAF implements Serializable  {
        private static final long serialVersionUID = 1L;
        @Id
        @ManyToOne
        @JoinColumn(name="idact")
        private Activite activite;
        @Id
        @ManyToOne
        @JoinColumn(name="idaf")
        private AF fa;
        private double montant;
        public Activite getActivite() {
            return activite;
        }
        public void setActivite(Activite activite) {
            this.activite = activite;
        }
        public AF getFa() {
            return fa;
        }
        public void setFa(AF fa) {
            this.fa = fa;
        }
        public double getMontant() {
            return montant;
        }
        public void setMontant(double montant) {
            this.montant = montant;
        }
        public ActiviteAF(Activite activite, AF fa, double montant) {
            super();
            this.activite = activite;
            this.fa = fa;
            this.montant = montant;
        }
        public ActiviteAF() {
            super();
        }
    
    }
    

    这是我的存储库

    程序包com.projet.pfe.dao;

    import java.util.Collection;
    
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.data.jpa.repository.Query;
    import org.springframework.data.repository.query.Param;
    
    import com.projet.pfe.entities.ActiviteAF;
    
    public interface ActiviteAFRepository extends JpaRepository<ActiviteAF,Long> {
        @Query("select af from ActiviteAF af where af.activite.idActivite like :x")
        public Collection<ActiviteAF> activitebyid(@Param("x") Long id);
    
    }
    

    这是Rest控制器

    包com.projet.pfe.service;

    import com.projet.pfe.DAO.AFRepository;
    import java.util.Collection;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    
    import com.projet.pfe.DAO.ActiviteAFRepository;
    import com.projet.pfe.DAO.ActiviteRepository;
    import com.projet.pfe.entities.AF;
    import com.projet.pfe.entities.Activite;
    import com.projet.pfe.entities.ActiviteAF;
    import org.springframework.web.bind.annotation.PathVariable;
    
    
    @RestController
    public class ActAFRestService {
        @Autowired
        private ActiviteAFRepository actafmet;
        @Autowired
            private ActiviteRepository actr;
            @Autowired
            private AFRepository afr;
    
           @RequestMapping(value="/saveactaf/{idact}/{idaf}/{montant}",method=RequestMethod.POST)
           public ActiviteAF save(@PathVariable(name="idact")long idact,@PathVariable(name="idaf")long idaf,@PathVariable(name="montant")double montant){
               Activite a = new Activite();
               AF af = new AF();
               a = actr.findOne(idact);
               af = afr.findOne(idaf);
               ActiviteAF aaf = new ActiviteAF(a,af,montant); 
               return actafmet.save(aaf);
           }
    }
    
  • 共有1个答案

    乜建柏
    2023-03-14

    我找到了一个解决办法,只是做了一个单曲。Id并将其他的修改为一个简单的注释(forign键),这个解决方案可以工作,但是在添加新对象的情况下需要一个测试(activite,af)。

     类似资料:
    • 我想使用R脚本在数据库中的现有表中输入一个数据帧,我希望数据库中的表有一个顺序主键。我的问题是RODBC似乎不允许主键约束。 下面是创建我想要的表的SQL: 和一个带有R代码的测试:

    • 我想使用JavaFx、Spring Boot和Spring Data JPA制作一个桌面应用程序,并将H2作为我的数据库。问题是我试图运行JUnit以将数据保存在本地目录中,但每次运行JUnit时数据都会丢失。 我的文件; 我的测试用例; 打印列表的大小是1,但当我再次像这样运行测试用例时 它打印的列表大小为0

    • 因为我是个新手,我的问题可能很简单。我搜索了一下,但没有找到一个令人信服的答案。在开发REST API时,API的目的是从现有的学生中创建一个玩家团队。POST方法,从现在开始,请求正文将保存请求正文中的学生ID(主键)。 在访问REST API时,请求主体是否可以包含表主键?

    • 1、主键约束 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL); 2、唯一性约束 保证一个字段或者一组字段里的数据都与表中其它行的对应数据不同。和主键约束不同,唯一性约束允许为null,但是只能有一行; 3、唯一性索引 不允许具有索引值相同的行,从而禁止重复的索引和键值; 4、三者的区别 约束是用来检查数据的正确性; 索引是用来优化查询的; 创建唯一性约束会创建一个约束和一个唯一性

    • 这是使用PHP将数据从(HTML)表单保存到MySQL数据库的规范问答。 如果您正在尝试执行以下操作,则此操作适用于您: 接受HTML表单上的用户输入 使用PHP脚本处理输入 将所述输入存储到MySQL数据库中。 过去提出的不应使用的类似问题的例子: 连接PHP代码并将表单提交到mySQL数据库 使用PHP/html表单插入mySQL-不工作 如何使用PHP将html表单数据传递到mySQL db

    • 下面是我的代码和我到目前为止所做的事情。 如何在单击#OrderSave按钮后使用ajax将表中的所有数据插入数据库? $(“#code”).bind(“blur keypress”,function(event){event.preventdefault();if(event.keycode===13 event.type=='blur'){var vals=$('#code').val();$