我读了很多问题,但还没有找到答案。

我有两个不同的表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中时,它将始终为其保存一个城市。但是我只想使用城市表中的现有条目:

例:

城市表
java - JPA ManyToOne关系和外部表的问题-LMLPHP

WeatherData表

java - JPA ManyToOne关系和外部表的问题-LMLPHP

因此,它只应将条目添加到WeatherData表中,并使用现有的城市作为外键。

有人有主意吗?

谢谢

最佳答案

如果您可以共享您的代码,那么您如何创建实体以及如何与存储数据相关联,这可能有助于指出错误的确切位置。但是:
1.如果城市实体提供的ID已存在,则它将不会在城市表中创建任何条目。要么
2.如果存在所有情况下都已存在城市的用例,则可以在WeatherData实体中的城市字段上使用@Column批注的insertable = false属性。

08-06 14:49