我如何在JPA中执行此操作?
数据库:
School
------
id int PK
name varchar
state int FK (State(id))
State
-----
id int PK
desc varchar
爪哇:
SchoolShow
----------
int id;
String name;
int iState;
String sState;
代码:
select sc.name, st.desc from school sc, state st where st.id=sc.state and sc.id=?
while(rs.hasNext()){
SchoolShow ss=new SchoolShow();
ss.setName(rs.getString("name"));
ss.setSState(rs.getString("desc"));
}
¿我可以使用不同表中属性的@Entity吗?
提前感谢!!
答案 0 :(得分:1)
您应该为School
和State
表创建实体,并在@ManyToOne
实体的state
属性上使用School
关系来引用该状态
然后你可以像这样查询,浏览从学校到州的关系:
List result = em.createQuery("SELECT sc.name, sc.state.desc FROM School sc").getResultList();
请注意,列表中的每个元素都是Object[]
。您需要迭代它们并将值分配给DTO。
您还可以将JPA构造函数表达式用于类型安全且不那么混乱:
List<DTO> dtos = em.createQuery("SELECT NEW com.example.DTO( sc.name, sc.state.desc) FROM School sc").getResultList();
DTO类型必须具有包含所有相关属性的构造函数。