@@ Formula返回空值

问题描述 投票:1回答:1

我有此代码。我必须使用自动增量来创建唯一的字段编号。这段代码没有给我任何帮助。当我尝试进行调试时,它会将“空”值赋给“数字字段”。我试图在数据库查询工具中执行此命令,一切正常。怎么了?

我的目标实体

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

        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Long id;


        @Column
        @Formula(value = "(select max(student_id) from student)")//+1
        private Long number;

        @Column
        private String fam;

        @Column
        private String name;

        @Column
        private String otch;
}

学生实体

@Entity
@Table(name="student", schema = "public")
public class Student extends Human implements Serializable {

    @Id
    @Column(name="student_id")
    @GeneratedValue(strategy = GenerationType.SEQUENCE)
    private Long id;

    @ManyToOne(fetch = FetchType.EAGER,cascade = {CascadeType.PERSIST, CascadeType.MERGE, CascadeType.DETACH})
    @JoinColumn(name="fk_groups")
    private Group gruppa;

}

我省略了setter,getter和构造方法

java database hibernate jpa entity
1个回答
0
投票

回答您的问题,您应该通过以下方式更正您的声明:

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

   // Please pay attention that you should not use @Column annotation here.
   @Formula(value = "(select max(public.student.student_id) from public.student)")
   private Long number;

   // ...
}

另请参阅休眠文档的this section

© www.soinside.com 2019 - 2024. All rights reserved.