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

标签 java postgresql jpa

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

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

示例:

城市表 CityTable

天气数据表

WeatherData Table

因此它应该只向 WeatherData 表添加条目并使用现有城市作为外键。

有人有想法吗?

谢谢

最佳答案

如果您可以分享您的代码如何创建实体以及如何与存储数据相关,这可能有助于判断到底哪里出了问题。然而 : 1. 如果城市实体提供的 ID 已存在,则它将不会在城市表中创建任何条目。或者 2. 如果存在所有情况下城市都已存在的用例,您可以尝试在 WeatherData 实体中的城市字段上使用 @Column 注释的 insertable = false 属性。

关于java - JPA ManyToOne 关系和外表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61704415/

相关文章:

java - 如何在不导致数据库更新的 JPA/Hibernate 中映射只读集合

hibernate - Hibernate 二级缓存的解决方案

java - Java 中的 VK_xxx 代表 ~(波形符),? (问号)、%(百分比)、| (竖线)和“(双引号)

sql - 使用 ActiveRecord 将 300M 行数据集插入 PostgreSQL

java.lang.ClassNotFoundException : org. apache.hive.service.cli.HiveSQLException 异常

python - 从数据文件启动 postgres 数据库服务器

mysql - PostgreSQL 和 PQC

java - 无法获取 LAZY - JPA

java - 最终量化方法的方法拦截器

java - 使用 KEA 或其他 python 库提取关键字