【问题标题】:Is @Table must for a JPA EntityJPA 实体必须使用@Table
【发布时间】: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 表吗,我想它会并且我缺少一些配置。

【问题讨论】:

    标签: hibernate jpa jpa-2.1


    【解决方案1】:

    由于 JPA 中类的默认表名与类名 (Candidate) 相同,因此如果要将其映射到不同的表名,则必须输入 @Table。根据所有 JPA 教程都会说

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      相关资源
      最近更新 更多