У меня есть два связанных лица.При сохранении в базу данных успешно сохраняется только один объект.Второй с внешним ключом не сохраняется.Второй, который имеет внешний ключ, является списком объектов. Пожалуйста, помогите.
здесь я добавил cascade = CascadeType.ALL
, но он все еще не работал
@Entity
@Table(name = "MyOrder")
public class MyOrder {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@OneToMany(mappedBy = "myOrder")
private List<Products> productses;
Я добавил fetch = Fetch.LAZY,это тоже не помогло.
@Entity
@Table(name = "Products")
public class Products {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
@ManyToOne
@JoinColumn(name = "product_myorder_id")
private MyOrder myOrder;
В контроллере я его заполняю:
MyOrder myOrder = new MyOrder();
List<Products2> products2s = object.getProductses2();
List<Products> productses = new ArrayList<Products>();
for(int i =0;i<products2s.size();i++){
Products2 products2 = products2s.get(i);
Products products = new Products();
products.setName(products2.getName());
products.setWeight(products2.getWeight());
products.setAmount(products2.getAmount());
products.setPrice(products2.getPrice());
productses.add(products);
}
myOrder.setProductses(productses);
//saving
serviceClass.createNewOrder(myOrder);
Класс обслуживания:
@Repository
@Transactional
public class MyServiceClass {
@Autowired
@Qualifier(value = "sessionFactory")
SessionFactory session;
public boolean createNewOrder(MyOrder myOrder){
session.getCurrentSession().save(myOrder);
return true;
}
}
Схема:
CREATE TABLE `myorder` (
`myOrder_id` int(11) NOT NULL AUTO_INCREMENT,
`date` varchar(255) DEFAULT NULL,
`status` varchar(255) DEFAULT NULL,
`myorder_company_id` int(11) DEFAULT NULL,
`myorder_courier_id` int(11) DEFAULT NULL,
PRIMARY KEY (`myOrder_id`),
KEY `FK_q6alh4tjuhyudpq770duori5h` (`myorder_company_id`),
KEY `FK_lcjnn2172xke45f2gmsiyvtep` (`myorder_courier_id`),
CONSTRAINT `FK_lcjnn2172xke45f2gmsiyvtep` FOREIGN KEY (`myorder_courier_id`) REFERENCES `courier` (`id`),
CONSTRAINT `FK_q6alh4tjuhyudpq770duori5h` FOREIGN KEY (`myorder_company_id`) REFERENCES `company` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`amount` varchar(255) DEFAULT NULL,
`consignation` bit(1) NOT NULL,
`debt` bit(1) NOT NULL,
`description` varchar(255) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`photo` varchar(255) DEFAULT NULL,
`price` varchar(255) DEFAULT NULL,
`rec_price` varchar(255) DEFAULT NULL,
`returned` bit(1) NOT NULL,
`weight` varchar(255) DEFAULT NULL,
`product_categories_id` int(11) DEFAULT NULL,
`product_company_id` int(11) DEFAULT NULL,
`product_myorder_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK_ovaxmqou7gnwgchnhbkp9tq1p` (`product_categories_id`),
KEY `FK_kwu6gyind0d2bthu19fcrkkcf` (`product_company_id`),
KEY `FK_jeh86q0ligae6ggjlq9lq89y5` (`product_myorder_id`),
CONSTRAINT `FK_jeh86q0ligae6ggjlq9lq89y5` FOREIGN KEY (`product_myorder_id`) REFERENCES `myorder` (`myOrder_id`),
CONSTRAINT `FK_kwu6gyind0d2bthu19fcrkkcf` FOREIGN KEY (`product_company_id`) REFERENCES `company` (`id`),
CONSTRAINT `FK_ovaxmqou7gnwgchnhbkp9tq1p` FOREIGN KEY (`product_categories_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;