mysql - @OneToOne 映射为 @OneToMany
问题描述
//@OneToOne 关系被 Spring data JPA 映射为 @OneToMany // 在 MySQL 中休眠
@Entity
@Table(name = "product")
public class Product extends DataJournal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private Double price;
private Date dom;
private Date expiryDate;
@OneToOne(mappedBy = "product", optional = false)
private Stock stock;
//getters and setters
}
@Entity
@Table(name = "stock")
public class Stock extends DataJournal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long quantity;
private Long reOrderLabel;
@OneToOne
@JoinColumn(name="product_id")
private Product product;
//getters and setters
}
// Product 和stock 的关系是@OneToOne 但在Mysql 中映射为 //@OneToMany,下面是mysql 数据库和//relation [1] 的逆向关系:https ://imgur.com/a/OqC0Ddt [2 ]:https ://imgur.com/a/3fFMuDD
解决方案
如果您让 Hibernate 为您生成 DDL,请尝试@JoinColumn(unique = true)
在您的Stock
课程中使用:
@Entity
@Table(name = "stock")
public class Stock extends DataJournal {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long quantity;
private Long reOrderLabel;
@OneToOne
@JoinColumn(name="product_id", unique = true)
private Product product;
//getters and setters
}
推荐阅读
- tensorflow - 如何在 COCO 数据集上加载预训练模型进行图像分割?
- html - 在加载所有页面之前先加载 SCRIPT
- php - 如何提取特殊字符之间的字符串?
- java - Appioum:无法使用(URL,功能)创建 AndroidDriver
- docker - Docker:在 alpine linux 发行版上安装 python 密码学
- php - Laravel 4.2应用程序登录后重定向到不受信任的站点
- java - 在 Java 中设置 COA MQ 的 CorrelationID 的替代方法
- node.js - Node js 应用程序不回复 API 调用,因为 Web 套接字正在使用所有资源
- perl - 如何在没有任何提示的情况下使用 Perl 脚本在 FreeBSD 中自动安装 Perl 包?
- sql-server - 替代 ROW_NUMBER() 来获取行位置?