[英]Hibernate: mapping map exception
我尝试通过Map
界面来映射一对二关系。
问题:我有一个奇怪的异常
例外
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)
Hibernate: insert into Order (customer_id, number, id) values (?, ?, ?)
码:
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();
}
实体:
@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
}
请尝试以下代码:
公共静态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));
}};
for (Order order : orders.values())
order.setCustomer(customer);
customer.setOrders(orders);
createSession.save(customer);
createSession.getTransaction().commit(); //HERE THE EXCEPTION COMES
createSession.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.