java - @GenerateValue 不适用于非 id 字段

标签 java database hibernate jpa entity

我想用自动生成(自动增量,最后一个数字+ 1)创建一个唯一的字段“数字”。但它不是一个 id 字段。我怎样才能达到这个目标? @GenerateValue 不起作用。仅生成了 id。我的代码不起作用。

我的实体

@Entity
@Table(schema = "public")
public class Policeman implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @Column
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long number;

    @Column
    private String fam;

    @Column
    private String name;

    @Column
    private String otch;

   //setters getters
}

最佳答案

这个问题看起来是一样的:Link1

它表示 @GenerateValue 注释仅与 @Id 结合使用来创建自动编号。它不能与非 id 列一起使用。但是,有一种解决方法建议使用生成的 ID 创建一个单独的实体,如下所示:

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(strategy = GenerationType.SEQUENCE)
  private Long number;
}

@Entity
@Table(schema = "public")
public class Policeman implements Serializable {

    @Id
    @GeneratedValue
    private Long id;

    @OneToOne(...)
    private GeneralSequnceNumber myVal;

    @Column
    private String fam;

    @Column
    private String name;

    @Column
    private String otch;

   //setters getters
}

您还可以引用以下链接,了解有关此解决方法的更多详细信息:Link2

希望对您有所帮助。

关于java - @GenerateValue 不适用于非 id 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59727811/

相关文章:

java - 使用 Hazelcast 的多播对不同的 Web 应用程序使用相同的 hibernate L2 缓存

java - 多个 JFrame 实例

java - 二维空间中的点线碰撞

database - 如何从 Django 异步处理数据库写入(可能使用消息队列)?

ruby-on-rails - 事件记录 : create record from parent object

sql - 如何使用 Hibernate 在连接/ session 开始时针对数据库运行 SQL SET 语句?

java - java中如何检查mysql用户是否存在

java - 防止jboss 4.2上的XXE攻击

java - Hibernate注释异常: Use of @OneToMany or @ManyToMany targeting an unmapped class

java - 如何在 hibernate 标准中使用 CURRENT_DATE 函数?