gpt4 book ai didi

java - 如何在没有外键的情况下匹配 hibernate/JPA 表

转载 作者:太空宇宙 更新时间:2023-11-04 12:15:49 24 4
gpt4 key购买 nike

我想将属性(虚拟地)映射到链接到另一个没有外键且不更改数据库结构的实体的实体中。已经有一个映射到相关表的键的 getter。

现有数据库。

食用鸡蛋

+----------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | 0 | |
| pid | varchar(60) | NO | | | |

table 篮

+----------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+-------+
| id | int(10) unsigned | NO | PRI | 0 | |
| pid | varchar(60) | NO | | | |

实体蛋

@SuppressWarnings("serial")
@Entity
@Table(name = "egg")
public class Egg implements java.io.Serializable {
private long id;
private String pid;
...
@Column(name = "pid")
public String getPid() {
return this.pid;
}

篮子的实体与已经为鸡蛋设置的 pid getter 类似。

我想建立一个连接模型。

LEFT JOIN egg ON basket.pid = egg.pid

两个表上都没有外键将 pid 映射在一起。

我尝试在鸡蛋实体中创建一个篮子属性。

例如

@JoinColumn(name = "pid", referencedColumnName = "pid", updatable = false, insertable = false)
public Basket getBasket(

当然,hibernate 会提示表中没有“篮子”列。

我如何获得这个鸡蛋的篮子?

最佳答案

尝试使用@JoinColumnsOrFormulas注释。

这样的事情应该有效:

@ManyToOne
@JoinColumnsOrFormulas({
@JoinColumnOrFormula(formula=@JoinFormula(value="(SELECT b.id FROM Basket b WHERE b.pid = pid)", referencedColumnName="id")),
@JoinColumnOrFormula(column = @JoinColumn(name = "pid", referencedColumnName="pid"))
})
private Basket getBasket() {
return this.basket;
}

关于java - 如何在没有外键的情况下匹配 hibernate/JPA 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39422403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com