2017-05-03 138 views
0

我有兩個實體:categoryoneToManyproducts春季引導:保存與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 

CategoryBean我有相同的字段Category實體。在ProductBean之一,我有相同的實體期望category字段(以避免映射時的無限循環)。

從前面(我使用的是角度),我發送與實體具有相同文件夾的類別對象。換句話說,爲了保存它而發送給後面的類別對象包含:nameproductsarray

要保存的類別,這是我在做什麼:

//from bean to entity 
Category category = CategoryMapper.toEntity(categoryBean); 
// NOTE: the category is containing the list of its products 
Category result = categoryRepository.save(category); 
return CategoryMapper.toBean(result); 

但我得到了一個500 status,這是錯誤:

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 

請注意,我使用oracleflyway。這是產品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); 

這是我的分類SQL腳本:

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"); 
+0

假設錯誤不是「oneTomany」關係。堆棧跟蹤抱怨'無效的user.table.column'。認爲問題在那裏。請分享涉及該操作的用戶表和代碼。 –

回答

0

在你的SQL文件,你錯過了增加一個外鍵約束上CATEGORY_ID列,它必須是相同的在長度IDCATEGORY

你可以這樣說:

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

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

所以問題是與SQL腳本,而不是Java代碼? –

+0

@Llg我沒有看到與共享Java代碼中顯示的異常相關的問題 – fujy

+0

請問您的代碼是用oracle語法編寫的嗎? –