我有一些型号我不想插入手动或自动的@Id我只想从插入中删除它?Java


@Id
@Column(name="ROWID", insertable=false)
private String rowId;
@Column(name="CLIENT_ID")
private Integer clientId;
@Column(name="ACCT_NO")
private String acctNo;
@Column(name="ACCT_CIF_NO")
private String acctCifNo;
@Column(name="ACCT_TYPE")
private String acctType;
@Column(name="ACCT_CUR")
private String acctCur;
@Column(name="ACCT_STATUS")
private Integer acctStatus;
@Column(name="ACCT_MAX_TRX_AMOUNT")
private Long acctMaxTrxAmount;
@Column(name="ACCT_MAX_TRX_DAILY")
private Long acctMaxTrxDaily;
@Column(name="ACCT_NAME")
private String acctName;
@Column(name="CTL_CREATE_DTM")
private Date ctlCreateDtm;
@Column(name="CTL_CREATE_BY")
private String ctlCreateBy;
@Column(name="CTL_UPDATE_DTM")
private Date ctlUpdateDtm;
@Column(name="CTL_UPDATE_BY")
private String ctlUpdateBy;

我有模型,我想使用jpa存储库进行插入。使用这个模型,但我不想插入rowId,因为它来自Oracle数据库,所以我想跳过它,这是可能的吗?

服务就像这个

@Override
public TEmasUsers create(TEmasUsers entity) {
return emasUsersDao.save(entity);
}

来自数据库的表,并且上面没有rowid

尝试在rowId列上添加@GeneratedValue

@Id
@Column(name="ROWID")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String rowId; 
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long rowId;

GenerationType.IDENTITY是实现这一点的最简单方法。IDENTITY表示数据库IDENTITY列将用于生成主键值。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ROWID")
private String rowId;

但是,这并不是您可能需要做的唯一更改。您的ROWID列在数据库中必须是某种自动递增的。

在Oracle中,版本12c支持IDENTITY,看起来像:

CREATE TABLE t1 (
c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, // this line
c2 VARCHAR2(10)
);

因此,如果您希望将private String rowId;更改为private Long rowId;,并且只有在这之后,当您持久化时,自动生成的值才会插入该列。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="ROWID")
private Long rowId;

缺少一些细节,所以让我们假设您有一些存储库:

public interface SomeRepository extends CrudRepository<YourEntity, String> {}

当你想把一些东西持久化到DB时,你会这样做:

...
YourEntity entity = new YourEntity();
// YOU DON'T SET rowId ! Remain it null
entity.setClientId(123);
entity.setAcctNo("123456");
// set all the other fields
...

在某个地方,你会打电话给:

...    
YourEntity persisted = someRepository.save(entity);
...

一旦持久化,这个persisted将具有rowId(通常是一个带有@Id注释的字段(,而不是null,而是生成并设置为该字段的一些值。

相关内容

最新更新