gpt4 book ai didi

java - 使用 JPA 插入另一个实体

转载 作者:太空宇宙 更新时间:2023-11-04 13:46:18 25 4
gpt4 key购买 nike

我想使用 JPA 执行与此查询相同的语义:

INSERT INTO second_table(second_id, second_name, audit_cre_at, audit_cre_from)
SELECT first_id, first_name, audit_cre_at, audit_cre_from
FROM FIRST_TABLE f
WHERE f.FIRST_VALID = 1;

DELETE FROM FIRST_TABLE WHERE FIRST_VALID = 1;

在这些表上:

CREATE TABLE FIRST_TABLE(
FIRST_ID RAW(16) NOT NULL CONSTRAINT FIRST_PK PRIMARY KEY,
FIRST_NAME VARCHAR2(2000),
FIRST_VALID NUMBER(1) NOT NULL,
AUDIT_CRE_AT TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL,
AUDIT_CRE_FROM VARCHAR2(32) DEFAULT 'system' NOT NULL,
CONSTRAINT SECOND_VALID CHECK (SECOND_VALID IN (0,1))
);

CREATE TABLE SECOND_TABLE(
SECOND_ID RAW(16) NOT NULL CONSTRAINT SECOND_PK PRIMARY KEY,
SECOND_NAME VARCHAR2(2000),
AUDIT_CRE_AT TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP NOT NULL,
AUDIT_CRE_FROM VARCHAR2(32) DEFAULT 'system' NOT NULL,
);

这是我的 FirstTable 实体:

@Entity
@Table(name = "FIRST_TABLE")
public class FirstTable{
@Id
@NotNull
@Convert("UuidConverter")
@Column(name = "FIRST_ID")
private UUID id;

@Column(name = "FIRST_NAME")
private String name;

@NotNull
@Column(name = "FIRST_VALID")
private int valid;

@NotNull
@Temporal(TIMESTAMP)
@Column(name = "AUDIT_CRE_AT")
private Date createdTime;

@NotNull
@Column(name = "AUDIT_CRE_FROM")
private String creator;
}

这是我的 SecondTable 实体:

@Entity
@Table(name = "SECOND_TABLE")
public class SecondTable{
@Id
@NotNull
@Convert("UuidConverter")
@Column(name = "SECOND_ID")
private UUID id;

@Column(name = "SECOND_NAME")
private String name;

@NotNull
@Temporal(TIMESTAMP)
@Column(name = "AUDIT_CRE_AT")
private Date createdTime;

@NotNull
@Column(name = "AUDIT_CRE_FROM")
private String creator;
}

我想在我的 FirstTable 实体中执行此操作。所以我想我必须设置一个 SecondaryTable 才能访问它:

@Entity
@Table(name = "FIRST_TABLE")
@SecondaryTable(name = "SECOND_TABLE")
@NamedQuery(...)
public class FirstTable

我不想执行上面提到的查询,但我宁愿使用 JPA 执行类似的操作(结果应与查询相同)。我怎样才能做到这一点?

最佳答案

除了从第一个表中读取所有实体,然后为第二个表创建相应的实体之外,JPA 不提供任何支持来执行此操作。

但这会比 SQL 查询慢很多。

关于java - 使用 JPA 插入另一个实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30804800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com