【问题标题】:org.springframework.web.util.NestedServletException: nested exception is org.hibernate.exception.SQLGrammarException: could not execute statementorg.springframework.web.util.NestedServletException:嵌套异常是 org.hibernate.exception.SQLGrammarException:无法执行语句
【发布时间】:2016-09-14 07:25:46
【问题描述】:

这里有两个实体,一个是Customer,一个是Order,一个customer可以获取多个Order,最后我在controller中使用springmvc返回了一个Customer对象,但是总是给我sqlgrammer错误,jackson-bind可以吗处理一对多问题? 这是控制器中的代码sn-p:

@RequestMapping(value = "/getCustomer", method = RequestMethod.GET)
public @ResponseBody Customer getCustomer(){

    Customer customer = new Customer();
    customer.setRecord("Crabime");
    customer.setGender("male");
    Order order = new Order("vegitable", 12.1);
    Order order1 = new Order("fruit", 3.2);
    Set<Order> set = new HashSet<Order>();
    set.add(order);
    set.add(order1);
    customer.setOrders(set);

    customerService.save(customer);
    return customer;
}

错误跟踪

org.springframework.web.util.NestedServletException: 请求 处理失败;嵌套异常是 org.hibernate.exception.SQLGrammarException:无法执行 声明

客户实体

     @Entity
    @Table(name = "customer")
    public class Customer {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
        private String record;
        private String gender;
        @OneToMany(fetch = FetchType.EAGER,cascade = {CascadeType.ALL}, mappedBy = "customer")
        private Set<Order> orders;
        public Customer(){}
...omit setter and getter...

这是命令:

 @Entity
@Table(name = "order")
public class Order {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private double price;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "customer_id")
    private Customer customer;

    public Order() {
    }

    public Order(String name, double price) {
        this.name = name;
        this.price = price;
    }
...omit setter and getter...

**更新:**可能是tomcat缓存问题,我记得当时重启了服务器,没有任何改变,但是在关闭项目几个小时后重新打开它,好的!

【问题讨论】:

  • 提供你的DAO代码,休眠保存客户...
  • @shantaram 不,这两个问题之间存在很大差异
  • session.save(customer) ?
  • 你的 sql 结果是什么?只是看看。你的数据库呢?

标签: java hibernate spring-mvc jackson


【解决方案1】:

对于这个错误,建议的方法是添加spring.jpa.show-sql=true打印sql语句,然后可以查看sql。通常它包含关键字,例如“订单”

【讨论】:

  • 你提醒我这个方法,其实sql语句都可以
  • @Crabime 我不认为“订单”是合法名称。
猜你喜欢
  • 2022-11-09
  • 2015-08-25
  • 2016-10-24
  • 2019-11-28
  • 2013-06-28
  • 2014-01-01
  • 2021-09-06
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多