Saving to more than two models using save associated fails

I am trying something more complicated. I have an Item which stores all general items, I have a Product which is an item and I have a Good which is a product and a item. So I have a form for entering value for the good and it shall save to all model related tables (items, products, goods). The reason for so many tables is because all tables shall have an id which is used later, example: product shall have its id which is used later for selling. Here is the controller:

public function add() {
    $this->load();

    if ($this->request->is('post')) {

        $data = array(
            'Item' => array(
                'name' => $this->request->data['Item']['name'],
                'description' => $this->request->data['Item']['description'],
                'is_deleted' => false
            ),
            'Product' => array(
                'project' => $this->request->data['Product']['project']
            ),
            'Good' => array(
                'status' => $this->request->data['Good']['status'],
                'release_date' => $this->request->data['Good']['release_date'],
                'is_for_distributors' => $this->request->data['Good']['is_for_distributors']
            ),
        );

        $this->Item->create();
        $this->Good->create();
        $this->Product->create();

        if($this->Good->saveAssociated($data, array('validate' => 'first'))){
            //success
        }
        if($this->Good->validationErrors || $this->Item->validationErrors || $this->Product->validationErrors){
            //ERRORS
        }
        else{
            //FAILS
        }
    }
}

Post data is mapped well, but everytime i try to save, I get an " SQLSTATE[HY000]: General error: 1364 Field ‘item_id’ doesn’t have a default value", while it tries to save to products:

`SQL Query: INSERT INTO `modules`.`products` (`hts_number`, `tax_group`, `eccn`, `release_date`, `is_for_distributors`, `status`, `project`, `modified`, `created`) VALUES ('8473 30 20', '20%', 'EAR99', '2019-10-21 09:09:00', '1', 'development', 'neqwww', '2019-10-21 09:24:44', '2019-10-21 09:24:44')`

Which is strange because CakePHP should map all ids (they are also mapped well in models).

class Good extends AppModel {

    public $belongsTo = array(
        'Item' => array(
            'className' => 'Item',
            'foreignKey' => 'item_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        ),
        'Product' => array(
            'className' => 'Product',
            'foreignKey' => 'pid',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );
}

class Product extends AppModel {

    public $hasOne = array(
        'Good' => array(
            'className' => 'Good',
            'foreignKey' => 'pid',
            'dependent' => false,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'exclusive' => '',
            'finderQuery' => '',
            'counterQuery' => ''
        ),
    );
}

class Item extends AppModel{

    public $hasMany = array(
         'Good' => array(
        'className' => 'Good',
        'foreignKey' => 'item_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    ),
    'Product' => array(
        'className' => 'Product',
        'foreignKey' => 'item_id',
        'dependent' => false,
        'conditions' => '',
        'fields' => '',
        'order' => '',
        'limit' => '',
        'offset' => '',
        'exclusive' => '',
        'finderQuery' => '',
        'counterQuery' => ''
    ),
    );

}

Looks like CakePHP is not providing values for field item_id in the Product model. Could anybode have idea why?