首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hibernate:映射映射异常

Hibernate:映射映射异常
EN

Stack Overflow用户
提问于 2014-04-04 14:33:01
回答 1查看 102关注 0票数 0

我试图通过Map接口映射一对二多个关系.

问题:,我有一个奇怪的例外

异常

代码语言:javascript
复制
Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute statement
    at ...
Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at or near "Order"

导致rhe异常的SQL查询:(show_sql=true)

代码语言:javascript
复制
Hibernate: insert into Order (customer_id, number, id) values (?, ?, ?)

代码:

代码语言:javascript
复制
public static void main(String[] args) {
    Session createSession = HibernateUtil.getSessionFactory().openSession();
    createSession.beginTransaction();

    final Customer customer = new Customer();
    Map<String, Order> orders = new HashMap<String, Order>() {{
        put("one", new Order("one", customer));
        put("two", new Order("two", customer));
        put("three", new Order("three", customer));
    }};
    customer.setOrders(orders);
    for (Order order : orders.values())
        createSession.save(order);
    createSession.save(customer);

    createSession.getTransaction().commit(); //HERE THE EXCEPTION COMES
    createSession.close();
}

实体:

代码语言:javascript
复制
@Entity
public class Customer {
    @Id
    @GeneratedValue
    private Integer id;

    @OneToMany(mappedBy = "customer")
    @MapKey(name = "number")
    private Map<String, Order> orders;

    // + getters & setters
}

@Entity
public class Order {

    @Id
    @GeneratedValue
    private Integer id;

    private String number;

    @ManyToOne
    private Customer customer;

    //+ Constructors, getters & setters
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 15:07:55

请尝试以下代码:

公共静态空洞主(String[] args) {

代码语言:javascript
复制
Session createSession = HibernateUtil.getSessionFactory().openSession();
createSession.beginTransaction();

final Customer customer = new Customer();
Map<String, Order> orders = new HashMap<String, Order>() {{
    put("one", new Order("one", customer));
    put("two", new Order("two", customer));
    put("three", new Order("three", customer));
}};

for (Order order : orders.values())
    order.setCustomer(customer);

customer.setOrders(orders);
createSession.save(customer);

createSession.getTransaction().commit(); //HERE THE EXCEPTION COMES
createSession.close();

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22865670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档