У меня возникает следующая ошибка, когда мне приходится вставлять две таблицы, связанные с внешним ключом:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`shop_db`.`PRODUCTO_PEDIDO`, CONSTRAINT `PRODUCTO_PEDIDO_ibfk_1` FOREIGN KEY (`PEDIDO`) REFERENCES `PEDIDO` (`ID`))
Это мои таблицы:
графические таблицы
А это мой код:
<api xmlns="http://ws.apache.org/ns/synapse" name="GestionFastFoodAPI" context="/fastfood">
<resource methods="POST" url-mapping="/insertarPedido">
<inSequence>
<property name="MessageID" expression="get-property('MessageID')" type="STRING"/>
<property name="uri.var.uuid" expression="fn:substring-after(get-property('MessageID'),'uuid:')"/>
<clone continueParent="true" sequential="true">
<target>
<sequence>
<dbreport>
<connection>
<pool>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://172.28.1.1:3306/shop_db</url>
<user>shop_db_user</user>
<password>shop_db_pass</password>
</pool>
</connection>
<statement>
<sql>INSERT INTO shop_db.PEDIDO (ID,USER,EMAIL,STATE) VALUES (?,?,?,"Solicitado")</sql>
<parameter xmlns:m0="http://services.samples/xsd" expression="fn:substring-after(get-property('MessageID'),'uuid:')" type="VARCHAR"/>
<parameter xmlns:m0="http://services.samples/xsd" expression="//EMAIL" type="VARCHAR"/>
<parameter xmlns:m0="http://services.samples/xsd" expression="//USER" type="VARCHAR"/>
</statement>
</dbreport>
</sequence>
</target>
<target>
<sequence>
<iterate xmlns:m0="http://services.samples" expression="//PEDIDOS">
<target>
<sequence>
<payloadFactory media-type="json">
<format>{"PEDIDO":"$1","PRODUCTO":$2,"CANTIDAD":$3}</format>
<args>
<arg evaluator="xml" expression="fn:substring-after(get-property('MessageID'),'uuid:')"/>
<arg evaluator="xml" expression="//PEDIDOS/PRODUCTO"/>
<arg evaluator="xml" expression="//PEDIDOS/CANTIDAD"/>
</args>
</payloadFactory>
<header name="Action" value="urn:insertarprodpedido"/>
<send>
<endpoint>
<http method="POST" uri-template="http://172.28.1.3:8280/fastfood/insertarProdPedido"/>
</endpoint>
</send>
</sequence>
</target>
</iterate>
</sequence>
</target>
</clone>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
<resource methods="POST" url-mapping="/insertarProdPedido">
<inSequence>
<payloadFactory media-type="json">
<format>{"_postinsertarprodpedido":{"PEDIDO":"$1","PRODUCTO":$2,"CANTIDAD":$3}}</format>
<args>
<arg evaluator="xml" expression="//PEDIDO"/>
<arg evaluator="xml" expression="//PRODUCTO"/>
<arg evaluator="xml" expression="//CANTIDAD"/>
</args>
</payloadFactory>
<send>
<endpoint>
<address uri="http://sandbox-wso2-ei:8280/services/data_food_db"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
<faultSequence/>
</resource>
</api>
В ресурсе "/ insertarPedido" я пытаюсь записать запись сначала в таблицу Orders, а затем в таблицу order_product. Когда я пишу в запрошенном продукте, он выдает ошибку внешнего ключа.
Мне нужно записать в обе таблицы один и тот же ресурс. Спасибо за помощь