[英]Joining tables in hibernate
我有两张桌子
Customer Rate
------------- -----------
res_number product
strategy name
fname type
lname rate
..... ......
我创造了两个豆
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 resolve property:
我尝试添加
@OneToOne(mappedBy = "strategy")
@Cascade(value = CascadeType.ALL)
private EmployeeDetails empDetails;
在CardDetails中,但是它给我一个错误,提示没有OneToOne可能。。。尝试更改为ManyToOne和OneToMany但不起作用。 谁能告诉我如何使用注解映射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
Customer表和product
的费率表。 这意味着该strategy
是外键。
如果这确实是一对一的关系,请在CardDetails中尝试以下操作:
@OneToOne
@JoinColumn(name = "product", referencedColumnName = "strategy")
private EmployeeDetails employeeDetails;
这是假设您尚未在CardDetails中将product
映射为属性,如果这样做,则需要以这种方式进行,否则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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.