我使用JPA和hibernate作为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表,我想它会丢失一些配置。
答案 0 :(得分:3)
由于JPA中类的默认表名与类名(Candidate
)相同,因此如果要将其映射到不同的表名,则必须放置@Table
。根据所有JPA教程,会说