@Table 是否必须用于 JPA 实体

Is @Table must for a JPA Entity

我正在使用 JPA 和休眠作为 JPA 提供程序来连接到我的数据库。我在数据库中有一个名为 Candidates 的 table,这是我的 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 不会自动查询复数名称,例如,如果实体名称是用户,它不会在数据库中查找用户 table,我想它会,但我缺少一些配置。

由于 class 在 JPA 中的默认 table 名称与 class 名称 (Candidate) 相同,因此您必须输入 @Table如果您想将其映射到不同的 table 名称。正如所有 JPA 教程所说