代码之家  ›  专栏  ›  技术社区  ›  gabriel119435

如何使用Hibernate将唯一密钥与有效的空内部值匹配?

  •  0
  • gabriel119435  · 技术社区  · 6 年前

    我有一个表(不是我创建的,也不能被我修改)有大约30列,其中有一个序列的代理主键。从这30列中,只有3列不能为空(我们称之为col1、col2和col3),并使用这3列和其他6列可以为空(col4。。。col9)列我有一个唯一的索引。我怎么能用Hibernate来映射 it doesn't allow null values at @Id attributes nor @EmbeddedId ? 考虑到我不允许更改任何数据库属性,建议的最佳解决方法是什么?

    考虑到我想要实现一个crud rest api,它应该检查该实体是否已经存在以更新数据,否则,将其插入到同一方法中。经过 (1,2,3) values (col1,col2,col3) 到我的查询应该导致成功插入空表。之后,如果我试图插入 (1,2,3,4) values (col1,col2,col3,col4)

    seqPK col1(notNull) col2(notNull) col3(notNull) col4(null)   col25(null) ...
    1     1             2             3             null         null        ...
    2     1             2             3             4            null        ...
    

    因为(1,2,3,null(x6))不同于(1,2,3,4,null(x5))。但是如果我试着插入 (1,2,3,25) values (col1,col2,col3,col25)

    seqPK col1 col2 col3 col4(null) col25(null) ...
    1     1    2    3    null       25          ...
    2     1    2    3    4          null        ...
    

    我计划用一个 @Query 在我的findById中(传递所有9个参数),并始终强制它们不为空( @NotNull ),从而在不使用任何 @身份证 我可以提供hibernate的功能。有更好的方法吗?

    0 回复  |  直到 6 年前