Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠SQL引用异常_Java_Sql_Hibernate_Spring Mvc - Fatal编程技术网

Java 休眠SQL引用异常

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

今天,我试图使用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表

@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;
  • 我的客户帐单地址模型

    @实体 公共类CustomerBillingAddress{

    @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;
    
  • 与其他模型类似

    最后是我的DAO方法,它将客户添加到db中

    这是密码

    @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更新我的模型:)