【发布时间】:2021-08-06 04:00:02
【问题描述】:
我试图从我的数据库表 Real_States 中找到一个对象,如下所示:
CREATE TABLE REAL_STATES (
address VARCHAR(30) NOT NULL,
admin_id VARCHAR(15) NOT NULL,
resident_id VARCHAR(15),
real_state_type_id INT(6) NOT NULL,
block VARCHAR(3) NOT NULL,
internal_id INT(5) NOT NULL,
PRIMARY KEY (address, block, internal_id),
FOREIGN KEY (real_state_type_id) REFERENCES REAL_STATE_TYPES (real_state_type_id),
FOREIGN KEY (admin_id) REFERENCES ADMINS (admin_id),
FOREIGN KEY (resident_id) REFERENCES RESIDENTS (resident_id)
);
我想通过它的复合主键(地址、块、internal_id)获取该表的一行,所有这些都来自我的 EntityManager。是这样的:
public RealState findRealState(RealStateID realStateId) {
RealState realState = em.find(RealState.class, realStateId); // first Try, which failed
List<RealState> realStates = em.createQuery("FROM RealState rs WHERE rs.realStateID.address like :" + realStateId.getAddress()).getResultList(); // second try which failed too
for (RealState realState2 : realStates) {
System.out.println(realState2.toString());
}
if (realState == null) {
throw new EntityNotFoundException("Can't find realState for ID " + realStateId.toString());
}
return realState;
}
RealStateID 类声明如下:
@Embeddable
public class RealStateID implements Serializable{
private static final long serialVersionUID = 6485406412363395170L;
@Column(name = "address")
private String address;
@Column(name = "block")
private String block;
@Column(name = "internal_id")
private int internal_id;
//getters..setters..
但是我只是错误地出错,IDK 我做错了什么,我想弄清楚它。我没有使用 Spring,只使用 JPA Hibernate 和 Java。
【问题讨论】:
标签: java hibernate jpa hql composite-key