我用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字符均为大写。
当我尝试使用主键查找实体时,它没有获取具有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,并且所有字符均以大写字母表示。 那么如何解决这个问题呢?
答案 0 :(得分:0)
首先,您应该在查询中使用参数,然后确保所传递的ID是UUID类型而不是String。