【发布时间】:2015-09-23 10:50:28
【问题描述】:
我使用 JPA 和休眠作为 JPA 提供程序来连接到我的数据库。我在数据库中有一个名为 Candidates 的表,这是我的 JPA 实体。
@Entity
public class Candidate {
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
public long cid;
public String name;
@ManyToOne
@JoinColumn(name="userCharacter")
public UserCharacter userCharacter;
}
这是我的代码中的随机 JPA 查询之一。
String queryStr = "SELECT new models.CandidateReport(c.cid, c.name, uc.rating) "
+ "FROM Candidate c JOIN c.userCharacter uc";
那么hibernate已经生成了sql为
select candidate0_.cid as col_0_0_, candidate0_.name as col_1_0_, usercharac1_.rating as col_2_0_
from Candidate candidate0_
join UserCharacter usercharac1_
on candidate0_.userCharacter=usercharac1_.uid
表示实体Candidate 不作为候选(复数)查询。明确指定@Table(name="Candidates") 后
问题解决了。 JPA 或 Hibernate 不会自动查询复数名称,例如,如果实体名称是 User,它不会在数据库中查找 users 表吗,我想它会并且我缺少一些配置。
【问题讨论】: