【发布时间】:2019-02-16 16:21:21
【问题描述】:
我有两张相关的面孔。保存到数据库时,只有一个对象被成功保存。第二个带外键的不保存。第二个有外键的是 List objects Please help.
这里我加了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;
【问题讨论】:
-
请告诉我您在哪个实体中添加了 cascade = CascadeType.ALL
-
在我的订单上,这里:@OneToMany(mappedBy = "myOrder",cascade = CascadeType.ALL) private List
productses; -
刚刚尝试了另一种方式,在产品中添加了级联。它没有帮助
标签: java mysql sql spring kotlin