java - 使用当前年份的 JPA/Hibernate 主键值序列

标签 java spring hibernate jpa-2.0

我正在使用 Spring 3 和 Hibernate 4

我在实体类中有以下内容

    @Id
    @Column(name = "PROJECT_NO")
    private String projectNumber;

当我将值插入数据库表时,是否可以插入以下格式的主键PROJECT_NO

20131 其中 2013 是当前年份,下一个字符应递增 1。即下一个要插入的值应该是 20132

如何使用 JPA/Hibernate 实现此目的

最佳答案

你必须看看@GeneratedValue@GenericGenerator注释。

产生值(value)的可能性有多种。对于您的情况,我相信您需要创建如下内容:

@Id
@GeneratedValue(strategy = GenerationType.AUTO, generator = "year_gen")
@GenericGenerator(name = "year_gen", strategy = "com.example.generator.CustomGenerator")
@Column(name = "PROJECT_NO")
private String projectNumber;

并且CustomGenerator应该实现org.hibernate.id.IdentifierGenerator

关于java - 使用当前年份的 JPA/Hibernate 主键值序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107399/

相关文章:

java - GWT RPC - 每个应用程序多个 RPC 服务

java - 需要在 GridView 项目上点击两次

Spring 3.1 缺少 ServletContext

hibernate "JOIN ... ON"?

java - 是否有 jpa 或 hibernate 属性使所有查询不区分大小写

java - Spring Boot编码问题ISO而不是UTF-8

java - Spring Boot Junit测试通过构造函数注入(inject)注入(inject)dao接口(interface)

java - 是否有类似于 usingColumns() 的 SimpleJdbcInsert 方法,该方法将排除的列列表作为参数?

java - Hibernate JPAModelGen 5.4.6.Final 在 JDK11 上失败

java - 如何在 Glassfish 上运行 Tutorialpoint 的 Servlet Post 示例?