使用Spring Boot的Oracle无法通过主键获取

时间:2018-07-17 03:44:39

标签: oracle spring-boot jpa

我用oracle db编写了一个spring boot应用程序。

下面是我的入门班。

@Entity
 public class SystemTypeLookup{
    @Id
    @GeneratedValue(generator = "UUID")
    @GenericGenerator(name = "UUID", strategy = "org.hibernate.id.UUIDGenerator")
    @Type(type = "uuid-char")
    @Column(name = "ID", updatable = false, nullable = false)
    protected UUID id;


    @Column(name = "CODE")
    private String code;
    }

并通过传递我自己的UUID作为主键值。 在oracle中,db ID被认为是 RAW ,而在oracle中存储的UUID是不同的。 oracle中没有-分隔符,并且所有UUID字符均为大写。 enter image description here enter image description here

当我尝试使用主键查找实体时,它没有获取具有ID的行。我总是空着。

  @Resource(name = "coreRepository")
    private ErpEntityRepository coreRepositoryBase;

SystemTypeLookup systemTypeLookup =  coreRepositoryBase.findOne("WHERE o.id='"+id+"'", SystemTypeLookup.class);

当通过 76c03cd9-3d96-40c5-8df9-aad8f2369453 作为ID值时,oracle将插入不带'-'的ID,并且所有字符均以大写字母表示。 那么如何解决这个问题呢?

1 个答案:

答案 0 :(得分:0)

首先,您应该在查询中使用参数,然后确保所传递的ID是UUID类型而不是String。