相关疑难解决方法(0)

hibernate oracle序列产生很大的差距

我正在使用hibernate 3,oracle 10g.我有一张桌子:主题.定义在这里

CREATE TABLE SUBJECT
    ( 
     SUBJECT_ID NUMBER (10), 
     FNAME VARCHAR2(30)  not null, 
     LNAME VARCHAR2(30)  not null, 
     EMAILADR VARCHAR2 (40),
     BIRTHDT  DATE       not null,
     constraint pk_sub primary key(subject_id) USING INDEX TABLESPACE data_index
    ) 
;
Run Code Online (Sandbox Code Playgroud)

当插入新主题时,sub_seq用于创建主题id,定义在这里

create sequence sub_seq
       MINVALUE 1 
       MAXVALUE 999999999999999999999999999 
       START WITH 1
       INCREMENT BY 1 
       CACHE 100 
       NOCYCLE ;
Run Code Online (Sandbox Code Playgroud)

Subject类是这样的:

@Entity
@Table(name="ktbs.syn_subject")
public class Subject {

    @Id 
    @Column(name="subject_id")
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SUB_SEQ")
    @SequenceGenerator(name="SUB_SEQ", sequenceName = "SUB_SEQ")
    private long subjectId;
    private String fname;
    private String lname;
    private String emailadr; …
Run Code Online (Sandbox Code Playgroud)

oracle hibernate sequence gaps-in-data

32
推荐指数
5
解决办法
5万
查看次数

JPA针对不同数据库的不同列类型

是否可以根据使用的数据库使用 JPA 定义不同的列类型?

我需要将 id 存储为 uuid 并且它必须是可移植的。那就是问题所在。PostgreSQL有“uuid”,MSSQL有“uniqueidentifier”,而Oracle什么都没有,我想必须使用“RAW”。

有人有想法并且可以帮助我吗?

编辑:目前,id 是使用 java.util.UUID 生成的,并以 varchar 形式存储在数据库中。但由于该数据类型的性能问题,我想将 ids 存储为 uuid 类型。对于Oracle来说,必须使用RAW类型,因为不存在uuid类型。如何告诉 JPA 在 PostgreSQ/MSSQL 中使用 uuid 类型,在 Oracle 中使用 RAW 类型?

java database oracle jpa

5
推荐指数
1
解决办法
1104
查看次数

JPA - 保存后自动生成的字段为空

我有一个Account实体,我正在尝试使用save函数来保存它。我的代码:

@Override
public Account createAccount(String pin) {

    Account account = new Account();
    account.setBalance(0L);
    account.setPin(pin);

    return accountRepository.save(account);

}
Run Code Online (Sandbox Code Playgroud)

现在我的实体类有一个名为 的自动生成字段accountNumber。我的实体类:

@Entity
@Table(name = "accounts")
@Data
public class Account {

    @Column(name = "account_number", length = 32, insertable = false)
    private String accountNumber;

    private Long balance;


}
Run Code Online (Sandbox Code Playgroud)

现在调用后save,返回的实体具有accountNumberasnull但我可以在 intellij 数据库视图中看到它实际上不为空。所有其他自动生成的字段(例如id等)都在返回的实体中,只是为accountNumber空。accountNumber 的默认值在 sql 文件中设置:

ALTER TABLE accounts
  ALTER COLUMN account_number SET DEFAULT DefaultValueSerializer(TRUE, TRUE, 12);
Run Code Online (Sandbox Code Playgroud)

这里,DefaultValueSerializer是生成帐号的函数。 …

spring hibernate jpa spring-mvc spring-boot

5
推荐指数
1
解决办法
5339
查看次数