Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring boot:保存具有oneToMany关系的实体时出错_Java_Angularjs_Spring Boot_Spring Data Jpa_Flyway - Fatal编程技术网

Java Spring boot:保存具有oneToMany关系的实体时出错

Java Spring boot:保存具有oneToMany关系的实体时出错,java,angularjs,spring-boot,spring-data-jpa,flyway,Java,Angularjs,Spring Boot,Spring Data Jpa,Flyway,我有两个实体:category拥有oneToMany产品 这些课程有: Product.java @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Column(name = "NAME") private Long NAME; @ManyToOne @JoinColumn(name="CATEGORY_ID", nullable = false)

我有两个实体:
category
拥有
oneToMany
产品

这些课程有:

Product.java

   @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "NAME")
    private Long NAME;

    @ManyToOne
    @JoinColumn(name="CATEGORY_ID", nullable = false)
    private Category category;

    //...getters, setters and toString
Category.java:

       @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long id;

        @Column(name = "NAME")
        private Long NAME;

        @OneToMany(cascade = CascadeType.ALL, mappedBy = "category", orphanRemoval = true)
        private List<Product> products;

        //...getters, setters and toString
但是我得到了一个
500状态
,这就是错误:

00:04:08.940 [http-nio-8080-exec-2] WARN  org.hibernate.engine.jdbc.spi.SqlExceptionHelper - SQL Error: 1747, SQLState: 42000
00:04:08.940 [http-nio-8080-exec-2] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ORA-01747: invalid user.table.column, table.column, or column specification

00:04:09.276 [http-nio-8080-exec-2] WARN  ma.neoxia.exceptions.RestResponseEntityExceptionHandler - INTERNAL_SERVER_ERROR error 
org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute statement
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:261)
    at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:244)
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:504)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:292)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:656)
    at 
请注意,我使用的是
oracle
flyway
。这是产品
SQL
脚本:

CREATE TABLE "PRODUCT"
   (  "ID" NUMBER(10,0),
  "NAME" VARCHAR2(255 CHAR),
  "CATEGORY_ID" NUMBER(10,0)
   );

CREATE UNIQUE INDEX "PRODUCT_ID_IDX" ON "PRODUCT" ("ID");

ALTER TABLE "PRODUCT" MODIFY ("ID" NOT NULL ENABLE);

ALTER TABLE "PRODUCT" ADD PRIMARY KEY ("ID");

ALTER TABLE "PRODUCT" MODIFY ("CATEGORY_ID" NOT NULL ENABLE);
   CREATE TABLE "CATEGORY"
      ( "ID" NUMBER(19,0),
    "NAME" VARCHAR2(255 CHAR)
      );

  CREATE UNIQUE INDEX "CAT_ID_IDX" ON "CATEGORY" ("ID");

  ALTER TABLE "CATEGORY" MODIFY ("ID" NOT NULL ENABLE);

  ALTER TABLE "CATEGORY" ADD PRIMARY KEY ("ID");
这是我的分类
SQL
脚本:

CREATE TABLE "PRODUCT"
   (  "ID" NUMBER(10,0),
  "NAME" VARCHAR2(255 CHAR),
  "CATEGORY_ID" NUMBER(10,0)
   );

CREATE UNIQUE INDEX "PRODUCT_ID_IDX" ON "PRODUCT" ("ID");

ALTER TABLE "PRODUCT" MODIFY ("ID" NOT NULL ENABLE);

ALTER TABLE "PRODUCT" ADD PRIMARY KEY ("ID");

ALTER TABLE "PRODUCT" MODIFY ("CATEGORY_ID" NOT NULL ENABLE);
   CREATE TABLE "CATEGORY"
      ( "ID" NUMBER(19,0),
    "NAME" VARCHAR2(255 CHAR)
      );

  CREATE UNIQUE INDEX "CAT_ID_IDX" ON "CATEGORY" ("ID");

  ALTER TABLE "CATEGORY" MODIFY ("ID" NOT NULL ENABLE);

  ALTER TABLE "CATEGORY" ADD PRIMARY KEY ("ID");

在SQL文件中,您没有在
CATEGORY\u ID
列上添加外键约束,该约束的长度必须与
CATEGORY
表中的
ID
列相同

您可以这样做:

Alter TABLE PRODUCT
MODIFY "CATEGORY_ID" NUMBER(19,0);

ALTER TABLE PRODUCT
ADD CONSTRAINT FK_CategoryProduct
FOREIGN KEY (CATEGORY_ID) REFERENCES CATEGORY(ID);

假设错误与
oneTomany
关系无关。堆栈跟踪抱怨
无效的user.table.column
。我想问题就在那里。请共享涉及该操作的用户表和代码。因此,问题出在sql脚本上,而不是java代码?@Llg我没有发现与共享java代码中显示的异常相关的问题。很抱歉,迁移失败:
sql状态:22019错误代码:911消息:ORA-00911:无效字符
,即使我有创建了“Product”表,我提到“CATEGORY_ID”是数字(10,0)?我测试了它,但我遇到了同样的问题