【发布时间】:2021-09-01 13:16:51
【问题描述】:
我有两张桌子。为简单起见,这里是the schema。 如您所见,表 sensor_data 有两个复合键,其中一个是元数据 id 的外键。 sensor_data 和 metadata 之间存在多对一的关系,这意味着对于每个元数据,可以有多个 sensor_data,但对于每个 sensor_data,只能有一个元数据。我还是 JPA 和 Hibernate 的新手,所以我正在努力实现它。到目前为止,这是我的代码,
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
@Data
@Entity
@AllArgsConstructor
@NoArgsConstructor
@IdClass(SensorDataId.class)
public class SensorData {
private Double x;
private Double y;
private Double z;
@Id
private Long timestamp;
@Id
@ManyToOne
@JoinColumn(name="metadata_id", nullable=false)
private Metadata metadata;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
@Data
public class SensorDataId implements Serializable {
private Long timestamp;
private Metadata metadata;
}
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.util.List;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Metadata{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String dataObservationRound;
private Long sensorNr;
@OneToMany (mappedBy = "metadata")
private List<SensorData> sensorDataList;
public Metadata(String dataObservationRound, Long sensorNr) {
this.dataObservationRound = dataObservationRound;
this.sensorNr = sensorNr;
}
}
但是我收到以下异常。
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.Long' to required type 'com.packagename.model.Metadata' for property 'metadata'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'java.lang.Long' to required type 'com.packagename.model.Metadata' for property 'metadata': no matching editors or conversion strategy found
由于我的知识非常有限,所以我只是尝试将它们的单独教程联系在一起,但我没有找到任何涵盖此特定场景的教程。因此,我们将不胜感激任何帮助。
【问题讨论】:
标签: spring-boot hibernate spring-data-jpa many-to-one composite-primary-key