我读了很多问题,但还没有找到答案。
我有两个不同的表WeatherData:
@实体
公共类WeatherData实现了Serializable {
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;
和城市:
@实体
// @ Table(name =“ city”,uniqueConstraints = @ UniqueConstraint(columnNames = {“ zip”,“ city”}))
公共类City实现了Serializable {
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() {
}
现在,当我尝试将weatherData保存在postgresDB中时,它将始终为其保存一个城市。但是我只想使用城市表中的现有条目:
例:
城市表
WeatherData表
因此,它只应将条目添加到WeatherData表中,并使用现有的城市作为外键。
有人有主意吗?
谢谢
最佳答案
如果您可以共享您的代码,那么您如何创建实体以及如何与存储数据相关联,这可能有助于指出错误的确切位置。但是:
1.如果城市实体提供的ID已存在,则它将不会在城市表中创建任何条目。要么
2.如果存在所有情况下都已存在城市的用例,则可以在WeatherData实体中的城市字段上使用@Column批注的insertable = false属性。