当前位置: 首页 > 知识库问答 >
问题:

Hibernate-JPA在不同情况下生成同名的重复表

汪玮
2023-03-14

我正在重新学习Hibernate和JPA。我正在使用Spring Boot,Gradle和Postgres为我的环境。我有一组访问Postgres数据库的域对象。两个对象不使用注释,使用一个JDBCTemplate类进行数据库操作。另一组域对象使用JPA注释。JPA对象集具有使用JPA注释映射的关系。当我运行单元测试来检查JDBC模板对象的数据库实体时,一切都很好。当我检查数据库时,我发现使用注释的那些域对象有重复的实体。

我已经检查了我的注释和项目的设置,但没有成功地找到我的错误。

下面是我的类定义:

import javax.persistence.*;
import java.io.Serializable;
import java.sql.Timestamp;

@Entity(name="AcceptanceCriteria")
@Table(name="accCriteria_tbl", schema="ia_req_changes")
@SequenceGenerator(name="AcceptCritera_SEQ_GEN", schema="ia_req_changes", sequenceName = "accCriteria_tbl_accCri_id_seq", initialValue = 1, allocationSize = 1)
public class AcceptanceCriteria implements Serializable{

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator="AcceptCritera_SEQ_GEN")
    @Column(name="accCri_id", updatable = false)
    private Long accCri_id;

    @Column(name="accAction")
    private String accAction;
    @Column(name="accControl")
    private String accControl;
    @Column(name="accAccptCriteria")
    private String accAccptCriteria;
    @Column(name="lastModified")
    private Timestamp lastModified;

    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "FK_funcReq_id", referencedColumnName = "funcReq_id")
    private FunctionalRequirement functionalReq;


    public AcceptanceCriteria() {
    }

共有1个答案

澹台俊晖
2023-03-14

在Postgres中,可以用双引号创建表(和列),表名区分大小写。例如,创建一个表

create table some_case (id bigint);

尝试重新创建它

create table Some_Case (id bigint);

它导致

但是用双引号。

create table "Some_Case" (id bigint);

它起作用了,你最终会在你现在拥有的一个场景中结束。我想有大写字母的表是故意以这种方式创建的,在JDBC模板中它是这样工作的?请参阅这篇相关文章:PostgreSQL列名区分大小写吗?

JPA@table注释中声明表名时,它总是落到小写。为了处理这种情况,可能会进行一些调整,如本文描述的Spring boot、JPA、insert in TABLE和Hibernate的大写字母名称

@Table(name="\"accCriteria_tbl\""
 类似资料:
  • 我试图生成私钥和公钥对。我想使用私钥签署我的JWT,并将公钥发送给第三方来解码我的JWT。 在mac os终端上,我生成了如下密钥: ssh-keygen-m PEM-t rsa-b 2048 现在我有了pkey吗 rsa_private=OpenSSL::PKey::rsa。新建(File.read(“/path/to/private/key/pkey”)) 你是私人的。要\u s “----开

  • 问题内容: 我回到Java世界,并尝试使用JPA,Hibernate和PostgreSQL配置一个新的Spring Web应用程序。 我发现了许多带有各种XML配置文件的较早的示例,并且我想知道是否存在一种不依赖XML文件编写的执行该配置的首选新方法。 我需要配置的一些东西是hibernateSQL方言,驱动程序等。 问题答案: 将以下片段放入带有和注释的类中 Hibernate / JPA(编辑

  • 本文向大家介绍boosting和bagging在不同情况下的选用相关面试题,主要包含被问及boosting和bagging在不同情况下的选用时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Bagging与Boosting的区别: 1)取样方式(样本权重):Bagging是均匀选取,样本的权重相等,Boosting根据错误率取样,错误率越大则权重越大。2)训练集的选择:Bagging随机选择

  • 我正在开发一个多租户应用程序(具有旧的数据库结构),其中我有一个公共用户表和一组基于访问权限的表。 例如,如果用户可以使用不同公司C1和C2的发票,则数据库包含具有名称C1_invoice和C2_invoice的表。 我能够实现添加前缀与一家公司使用组织。冬眠靴子模型命名。物理命名策略标准 所以我可以访问C1_invoice表。但是如何动态选择前缀C1或C2呢?

  • 问题内容: 我正在使用Hibernate + JPA作为我的ORM解决方案。 我正在使用HSQL进行单元测试,并使用PostgreSQL作为真正的数据库。 我希望能够将Postgres的本机UUID类型与Hibernate一起使用,并在其String表示形式中将UUID与HSQL一起用于单元测试(因为HSQL没有UUID类型)。 我正在为Postgres和HSQL单元测试使用具有不同配置的持久性X

  • 任何建议什么将是实施这种行为的最佳方式。 谢谢Bsengar