我读了很多问题,但还没有找到答案。
我有两个不同的表 WeatherData:
@实体 公共(public)类 WeatherData 实现可序列化 {
private static final long serialVersionUID = 14494984498L;
@Id
@GeneratedValue
private long id;
private LocalDateTime localDateTime;
@ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "city_id", referencedColumnName = "city_id")
private City city;
和城市:
@Entity //@Table(name="city",uniqueConstraints=@UniqueConstraint(columnNames={"zip","city"})) 公共(public)类 City 实现可序列化 {
private static final long serialVersionUID = 5645010000464665328L;
@Id
@GeneratedValue
@Column(name = "city_id")
private int id;
@Column(name = "zip")
private int zip;
@Column(name = "city")
private String city;
public City() {
}
现在,当我尝试将天气数据保存在 postgresDB 中时,它总是会保存一个城市。但我只想使用城市表中的现有条目:
示例:
天气数据表
因此它应该只向 WeatherData 表添加条目并使用现有城市作为外键。
有人有想法吗?
谢谢
最佳答案
如果您可以分享您的代码如何创建实体以及如何与存储数据相关,这可能有助于判断到底哪里出了问题。然而 : 1. 如果城市实体提供的 ID 已存在,则它将不会在城市表中创建任何条目。或者 2. 如果存在所有情况下城市都已存在的用例,您可以尝试在 WeatherData 实体中的城市字段上使用 @Column 注释的 insertable = false 属性。
关于java - JPA ManyToOne 关系和外表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61704415/