2016-02-26 75 views
2

我試過在我的spring應用程序中運行以下測試。org.h2.jdbc.JdbcSQLException:未找到列「Salman」;

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringApplicationConfiguration(classes=App1Application.class) 
@Sql(scripts="customerTest.sql") 
@DirtiesContext(classMode=ClassMode.AFTER_EACH_TEST_METHOD) 

public class customerTest { 


    @Autowired 
    customerRepository customerDB; 

    @Test 
    public void countRecords(){ 

     assertThat(customerDB.count(),is(2l)); 

    } 
} 

,並在customerTest.sql文件我有:

insert into customer(id,name,lastname) values(1,"Salman","Lashkarara"); 
insert into customer(id,name,lastname) values(2,"Saba","Lashkarara"); 

這裏是我的客戶

@Entity 
@Data 

public class customer { 

    @Id 
    @GeneratedValue 
    int id; 

    String name; 
    String lastname; 
    } 

我用JPA太:

public interface customerRepository extends JpaRepository<customer,Long>{ 

} 

的問題是,當我運行我面對出錯的測試:

org.h2.jdbc.JdbcSQLException: Column "Salman" not found; SQL statement: 
insert into customer(id,name,lastname) values(1,"Salman","Lashkarara") 

同時「薩勒曼」是一個值而不是列?

請注意,我使用彈簧MVC所以沒有數據庫 我只有我的代碼所做的模型(customer)。

+0

那麼文件「customerTest.sql」包含什麼內容? –

+0

它包含2個插入查詢,正如我所提到的 – Salman

+2

雙引號'''是SQL中的一個保留字符,因此,''Salman''不像您期望的那樣是一個字符串值,而是一個對象標識符,它在'INSERT'語句被推斷爲一個列名,SQL中的字符串需要用單引號括起來''''''Salman''應該是''Salman''和''Lashkarara'''應該是''Lashkarara ''。 – manish

回答

4

compailer的行爲做出這樣的錯誤仍然是我的問題, 但我設法使用這種single quote '',而不是雙引號來處理這個錯誤""

我用這個

insert into customer(id,name,lastname) values(1,'Salman','Lashkarara') 

而不是

insert into customer(id,name,lastname) values(1,"Salman","Lashkarara") 
+0

是啊,那很好..! –

0

嘗試使用''(單引號)而不是「」(雙引號)。我認爲這是H2庫中的問題

相關問題