2017-12-28 19 views
1

データベースにデータを挿入してみます。毎回このエラー1行目の 'update、stock_id)値(0、0.0、10018、1、null、0、null、0)の近くで使用する正しい構文

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'update, stock_id) values (0, 0.0, 10018, 1, null, 0, null, 0)' at line 1 

データベース

CREATE TABLE `stock_log` ( 
    `stock_id` int(11) NOT NULL AUTO_INCREMENT, 
    `added_employee` int(11) DEFAULT NULL, 
    `added_item` int(11) DEFAULT NULL, 
    `added_quantity` int(11) DEFAULT NULL, 
    `added-price` double DEFAULT NULL, 
    `supplier` int(11) DEFAULT NULL NOT, 
    `update` varchar(45) DEFAULT NULL, 
    `update_reason` varchar(45) DEFAULT NULL, 
    PRIMARY KEY (`stock_id`), 
    KEY `added_employee_idx` (`added_employee`), 
    KEY `added_item_idx` (`added_item`), 
    KEY `supplier_idx` (`employee`), 
    CONSTRAINT `added_employee` FOREIGN KEY (`added_employee`) 
    REFERENCES `employee` (`employee_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `added_item` FOREIGN KEY (`added_item`) 
    REFERENCES `item_stock` (`item_id`) ON DELETE NO ACTION ON UPDATE NO ACTION, 
    CONSTRAINT `supplier` FOREIGN KEY (`supplier`) 
    REFERENCES `supplier`(`supplier_id`) ON DELETE NO ACTION ON UPDATE NO ACTION) 
    ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

モデル

@Entity 
@Table(name="stock_log") 
public class Stock { 

    @Id 
    @Column(name="stock_id")  
    private int stockId; 
    @Column(name="added_employee")  
    private int employee; 
    @Column(name="added_item") 
    private int item; 
    @Column(name="added_quantity") 
    private int addQty; 
    @Column(name="added_price")  
    private double addedPrice; 
    @Column(name="supplier")  
    private int supplier; 
    @Column(name="update") 
    private String update; 
    @Column(name="update_reason") 
    private String reason;  

    public Stock() { 
     super();  // TODO Auto-generated constructor stub  
    } 

    public Stock(int stockId, int employee, int item, int addQty, 
       double addedPrice, int supplier, String update, String reason) { 
     super();   
     this.stockId = stockId; 
     this.employee = employee; 
     this.item = item; 
     this.addQty = addQty; 
     this.addedPrice = addedPrice; 
     this.supplier = supplier; 
     this.update = update; 
     this.reason = reason; 
    } 

    //getter setter 

} 

サービス

を表示

リポジトリ

public interface StockLogRepository extends JpaRepository<Stock, String> { 
} 

コントローラ

@Controller 
public class CommonController {   
    @Autowired 
    SupplierService supService;  
    @Autowired 
    StockLogService stockService; 
    Date todayDate = Calendar.getInstance().getTime(); 

    @RequestMapping(value="testing1") 
    public ModelAndView viewStock1() {  
     ModelAndView moView = new ModelAndView("testing1");    
     //Give empty stock object for ("/add")  
     moView.addObject("newStockCommand", new Stock());   
     return moView; 
    } 
    @RequestMapping(value="testing2") 
    public ModelAndView viewStock2(@ModelAttribute ("newStockCommand") Stock newStockCommand) {   
     ModelAndView moView = new ModelAndView("testing2"); 
     moView.addObject("addedStock", newStockCommand); 
     stockService.saveAStock(newStockCommand);  
     return moView; 
    } 
} 

JSP

JSP screenshot

+0

マークアップを多少クリーンアップしましたが(コードで4つのスペースを使用)、コードはまだかなり読めません。あなたの質問を読みやすくするために再フォーマットすることをお勧めします。書式設定の詳細については、[編集ヘルプ](https://stackoverflow.com/editing-help)を参照してください。 –

+0

ありがとうございます。 – Yin

答えて

1

updateはキーワードです。あなたのテーブル定義で

update varchar(45) DEFAULT NULL 
+0

ありがとうございました! – Yin

+0

聞いてうれしい!その後、正しい答えを受け入れる) – StanislavL

0

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorExceptionを列の名前を変更しようとする - この例外は、構文を使用して、いくつかの問題があることを示しています。構文を直接調べて問題を知ることができます。列名 "update"はキーワードであり、データベース内のレコードを更新するためのクエリの作成に使用されています。だから、それは例外を投げている。どのRDBMSでもキーワードを列名として使用することはできません。

+0

ありがとうございました! – Yin

+0

「予約語」です – Strawberry

関連する問題