【发布时间】:2020-11-05 04:11:02
【问题描述】:
我正在编写一个应用程序,它将查询一个无法更改的大型数据库。
因此,我的应用程序不需要映射所有对象,因为那样既无用又耗时。
那里映射的所有实体都是@Immutable。
我遇到了这种关系:
我想映射Order,并让它引用Customer。实际上,它是多对一关系,只是发生在两个 Join 子句之外。
我对@987654326@ 和B 都不感兴趣,因为它们没有传达与我的要求相关的信息。
我想像这样,但我知道语法无效:
@Entity
@Immutable
@Table(name = "Order")
public class Order implements Serializable {
@Id
@Column(name = "id")
private Long id;
@ManyToOne
@JoinColumns(value =
@JoinColumn(table = "R", name = "id", referencedColumnName = "R_id"),
@JoinColumn(table = "Customer", name = "id", referencedColumnName = "Customer_id")
)
private Customer customer;
... more data and getters/setters omitted ...
}
@Entity
@Immutable
@Table(name = "Customer")
public class Customer implements Serializable {
@Id
@Column(name = "id")
private Long id;
... more data and getters/setters omitted ...
}
有没有一种方法可以做到这一点,而无需为R 创建实体?
编辑:-------------
根据建议,我尝试了以下方法:
@ManyToOne
@JoinTable(name = "R",
joinColumns = @JoinColumn(name = "id", referencedColumnName = "R_id"),
inverseJoinColumns = @JoinColumn(name = "id", referencedColumnName = "Customer_id"))
private Customer customer;
但是,我收到以下错误:
Unable to find column with logical name: R_id in org.hibernate.mapping.Table(Order) and its related supertables and secondary tables
【问题讨论】:
标签: database hibernate jpa spring-data-jpa