gpt4 book ai didi

java - 在 hibernate 中连接表

转载 作者:行者123 更新时间:2023-12-01 12:41:24 26 4
gpt4 key购买 nike

我有两张 table

Customer                            Rate

------------- -----------
res_number product
strategy name
fname type
lname rate
..... ......

我创建了两个 bean

1.                                      2. 

@Entity @Entity
@Table(name="customer") @Table(name="rates")
EmployeeDetails{ CardDetails{
@Col(name="res_number") @col(name="product")
String resNum; String product;
..... ....

} }

现在我的查询是

hql = "from CardDetails cd, EmployeeDetails ed where ed.strategy = cd.product".

但它给了我引用问题,说 hibernate.QueryException: Could not parse property:

我尝试添加

@OneToOne(mappedBy = "strategy")
@Cascade(value = CascadeType.ALL)
private EmployeeDetails empDetails;

在 CardDetails 中,但它给我错误说不可能有 OneToOne...尝试更改为 ManyToOne 和 OneToMany 但不起作用。谁能告诉我如何使用注释映射用于连接的 bean?注意:数据库设计不正确,两个表中没有公共(public)字段(如外键)。因此,我们非常感谢任何帮助。

编辑:

添加 bean :

@Entity
@Table(name="rates")
public class CardDetails {
@Id
@Column(name="CARD_NAME")
String cardName;
@Column(name="CARD_TYPE")
String cardType;
@Column(name="FAQ_PAGE")
String faqPage;
@Column(name="GEN_INTRO_DISCL")
String genIntroDiscl;
@Column(name="GEN_REGULAR_RATE")
String genRegularRate;
@Column(name="BT_FEE")
String btFee;
@Column(name="BONUS")
String bonus;
@Column(name="ART_WORK")
String artWork;
@Column(name="DISCLOSURE_LINK")
String disclosureLink;
@Column(name="TERMS_LINK")
String termsLink;
@Column(name="PRODUCT")
String product;

@Entity
@Table(name="CUSTOMER")
@SecondaryTable(name="APPLICANT")
public class EmployeeDetails {
@Id
@Column(name="RESERVATION_NUMBER")
String reservNumber;
@Column(name="SSN")
int ssnNumber;
@Column(name="BANK_NUMBER")
String bankNumber;
@Column(name="BRANCH_NUMBER")
String branchNumber;
@Column(name="EMPLOYEE_ID")
String empId;
@Column(name="STRATEGY")
String strategy;

最佳答案

从 HQL 的外观来看,您希望使用 stratety 连接两个表。在客户表中和 product在费率表中。这意味着 strategy是外键。

如果这确实是一对一的关系,则在 CardDetails 内部尝试以下操作:

@OneToOne
@JoinColumn(name = "product", referencedColumnName = "strategy")
private EmployeeDetails employeeDetails;

这假设您还没有 product映射为 CardDetails 中的属性,如果这样做,则需要这样做,否则 Hibernate 会提示重复的字段映射。

@Column(name = "product", columnDefinition = "char")
private String product;

@OneToOne
@JoinColumn(name = "product", referencedColumnName = "strategy", insertable = false, updatable = false)
private EmployeeDetails employeeDetails;

如果需要是一对多的关系,那么这样做:

@Column(name = "product", columnDefinition = "char")
private String product;

@OneToMany
@JoinColumn(name = "product", referencedColumnName = "strategy", insertable = false, updatable = false)
private List<EmployeeDetails> employeeDetails;

关于java - 在 hibernate 中连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067538/

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