@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 教程所说
我正在使用 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 教程所说