Java 休眠SQL引用异常
今天,我试图使用Hibernate注释将客户添加到数据库中,但我不知道为什么我会遇到表的引用问题 请阅读下面的例外情况 错误:引用完整性约束冲突: “FKOFMCKE0O4K2TFOXB308SKTMQ3:PUBLIC.CUSTOMER-FOREIGN 键(CUS_BILLINGADDRESSID)参考 PUBLIC.CUSTOMERBILLINGADDRESS(CUS_billingaddress)('cba0001')”;SQL 声明: 更新客户集cus\u emailid=?、cus\u mobileno=?、cus\u name=?、cus\u billingaddress=?、cus\u cartid=?、cus\u loginid=?, cus_shippingaddressid=?其中cus_id=?[23506-193] 2017年4月1日下午7:09:57 org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl发布 信息:HH000010:在批处理发布时,它仍然包含JDBC语句 2017年4月1日下午7:09:57 org.hibernate.internal.exceptionApperstandardimpl mapManagedFlushFailure 错误:HH000346:托管刷新期间出错[org.hibernate.exception.ConstraintViolationException:无法 执行语句] 2017年4月1日晚上7:09:57 org.apache.catalina.core.StandardWrapper 严重:路径为[/TechNXT]的上下文中Servlet[dispatcher]的Servlet.service()引发异常[请求处理失败;嵌套 异常为javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException:无法 带根本原因的execute语句] org.h2.jdbc.JdbcSQLException:引用完整性约束冲突:“fkofmcque0o4k2tfoxb308sktmq3:PUBLIC.CUSTOMER-FOREIGN 键(CUS_BILLINGADDRESSID)参考 PUBLIC.CUSTOMERBILLINGADDRESS(CUS_billingaddress)('cba0001')”;SQL 声明: 更新客户集cus\u emailid=?、cus\u mobileno=?、cus\u name=?、cus\u billingaddress=?、cus\u cartid=?、cus\u loginid=?, cus_shippingaddressid=?其中cus_id=?[23506-192] 位于org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 位于org.h2.message.DbException.get(DbException.java:179) 位于org.h2.message.DbException.get(DbException.java:155) 位于org.h2.constraint.ConstraintReferential.checkRowOwnTable(ConstraintReferential.java:372) 位于org.h2.constraint.ConstraintReferential.checkRow(ConstraintReferential.java:314) 位于org.h2.table.table.fireConstraints(table.java:967) 在org.h2.table.table.firefatterrow(table.java:985) 位于org.h2.command.dml.Update.Update(Update.java:151) 位于org.h2.command.CommandContainer.update(CommandContainer.java:98) 位于org.h2.command.command.executeUpdate(command.java:258) 位于org.h2.server.TcpServerThread.process(TcpServerThread.java:344) 位于org.h2.server.TcpServerThread.run(TcpServerThread.java:158) 位于java.lang.Thread.run(未知源) 这是我的两张模型桌子 注意:我已经生成了getter和setter,但没有发布,所以尽可能小 1.包含另一个表的引用的Customer表Java 休眠SQL引用异常,java,sql,hibernate,spring-mvc,Java,Sql,Hibernate,Spring Mvc,今天,我试图使用Hibernate注释将客户添加到数据库中,但我不知道为什么我会遇到表的引用问题 请阅读下面的例外情况 错误:引用完整性约束冲突: “FKOFMCKE0O4K2TFOXB308SKTMQ3:PUBLIC.CUSTOMER-FOREIGN 键(CUS_BILLINGADDRESSID)参考 PUBLIC.CUSTOMERBILLINGADDRESS(CUS_billingaddress)('cba0001')”;SQL 声明: 更新客户集cus\u emailid=?、cus\u
@Entity
public class Customer {
@Id
private String cus_id;
private String cus_name;
private String cus_emailid;
private String cus_mobileno;
@OneToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="cus_loginid")
private CustomerDetails customerdetails;
@OneToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="cus_billingaddressid")
private CustomerBillingAddress customerbillingaddress;
@OneToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="cus_shippingaddressid")
private CustomerShippingAddress customershippingaddress;
@OneToOne(cascade=CascadeType.REFRESH)
@JoinColumn(name="cus_cartid")
private CustomerCart customercart;
@Id
private String cus_billingaddressid;
private String cus_houseno;
private String cus_street;
private String cus_area;
private String cus_city;
private String cus_state;
private String cus_country;
private String cus_pincode;
@OneToOne(mappedBy="customerbillingaddress")
private Customer customer;
@Transactional
public String addCustomer(Customer customer) {
System.out.println("CustomerDao -TechNXT\n");
Session ses = sf.openSession();
customer.setCus_id(generateCustomerid());
customer.setCustomerbillingaddress(new CustomerBillingAddress());
customer.setCustomershippingaddress(new CustomerShippingAddress());
customer.setCustomercart(new CustomerCart());
customer.getCustomerdetails().setCus_loginid(generateCustomerLoginid());
customer.getCustomerbillingaddress().setCus_billingaddressid(generateCustomerBillingid());
customer.getCustomershippingaddress().setCus_shippingaddressid(generateCustomershippingid());
customer.getCustomercart().setCus_cartid(generateCustomerCartid());
customer.getCustomerdetails().setCus_isenabled(true);
customer.getCustomerdetails().setCus_role("ROLE_USER");
Transaction tr = ses.beginTransaction();
ses.save(customer);
tr.commit();
ses.close();
return customer.getCustomerdetails().getCus_loginid();
}
我从3小时起就一直在试东西,但没能找到解决办法!!
很抱歉占用了你宝贵的时间。
提前感谢您的帮助!您能在课堂上标出@Table注释吗 像
@Table(name=“客户”)
您尝试过Cascadetype.All on Customer中的CustomerBillingAddress字段吗?您应该搜索Hibernate Cascadetype并阅读它,例如,我回答了另一个问题。Cascadetype.All包括所有Cascade,这意味着当您删除客户对象时,字段中的对象也会被删除。如果您只需要两种类型让我们使用@OneToOne(cascade={CascadeType.MERGE,CascadeType.PERSIST})例如@JackFlamp非常感谢!先生,我在哪里可以跟你说:)当然,我会用表格注释ty更新我的模型:)