当前位置: 首页 > 面试题库 >

Hibernate 4和Postgres:如何为每个表创建一个序列?

汪德明
2023-03-14
问题内容

我使用Hibernate4来映射到Postgres数据库。在进行映射之前,我先创建Java实体。然后,我使用一个Java类从我的实体生成sql脚本。这是我的实体:

用户实体

@Entity
@Table(name="myusers")
public class User {


    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name="fistname")
    private String firstName;

    @Column(name="lastName")
    private String lastName;
....
}

项目实体

@Entity
@Table(name="projects")
public class Project {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;

    @Column(name="title")
    private String title;

    @Column(name="description")
    private String description;
..
}

我注意到,这@GeneratedValue(strategy =GenerationType.AUTO)会为表myusers和项目产生相同的序列。如果我在myusers表上创建第一条记录,则id将具有“
1”作为值,然后当我在表项目中创建第一条记录时,该记录将具有id =2。他们使用相同的序列。我想知道如何无法修改我的实体以指定给Hibernate为每个表创建序列。


问题答案:

如果您使用的是最新的休眠模式,请尝试:

@GeneratedValue(strategy = GenerationType.IDENTITY)

如果仍然对每个表使用序列,请使用:

@GeneratedValue(strategy = GenerationType.SEQUENCE, generator="mytable_id_seq")
@SequenceGenerator(name="mytable_id_seq", sequenceName="mytable_id_seq", allocationSize=1)


 类似资料:
  • 我有以下代码,可以很好地将相关数据复制到我的工作表中。我为J列中的每个唯一部门手动创建每个工作表,然后运行此宏。我想要一个基于J列中的唯一值动态创建工作表的宏。我在网上找到了很好的资源,但当它到达已经为其创建了工作表的行时,我发现的资源似乎会出错。在手动创建其他工作表之前,我包含了我当前使用的代码以及我的清单表的屏幕截图

  • 我有一个文本文件为: sample.txt 我试过的是 这一结果 我想要的结果是:

  • 我有数据。下面的框架。我想添加一列“g”,它根据列中的连续序列对数据进行分类。也就是说,如最后一列“g”所示,h_no

  • 问题内容: 我想从表中的数据创建json。表看起来像这样: 我正在使用FOR JSON PATH,这很不错: 但此查询的返回值是一行中的三个串联的json: 我需要每一行都是一个单独的json,像这样: 我正在尝试使用拆分函数(CROSS APPLY),该函数需要使用分隔符作为参数,但这不是一个可靠的解决方案,因为json可以进一步扩展或分支,并且可以不分离整个json,而是分离json内部的js

  • 我有一个数据框,其中一些单元格包含多个值的列表。我不想在一个单元格中存储多个值,而是希望扩展dataframe,以便列表中的每个项都有自己的行(在所有其他列中都有相同的值)。因此,如果我有: 如何转换为长格式,例如: 索引并不重要,可以将现有列设置为索引,而最终的顺序并不重要。

  • 问题内容: 我正在尝试创建一个表格,其中每一行都是一个表格。我希望每个输入都在不同的表分区中,但是例如,我仍然需要所有所有第一个输入都属于同一个表头,依此类推。 我想做的是一个可编辑的网格 ,或多或少这样: 但是显然我不能以这种方式排列标签(或者w3c验证程序所说的也是如此)。 有什么好办法吗? 问题答案: 如果你想要一个“编辑网格”,即像结构的表格,可以让你做任何行的形式,使用CSS,模仿表标签