gpt4 book ai didi

java - 使用实体管理器在多个模式中保存数据

转载 作者:行者123 更新时间:2023-12-01 18:35:30 24 4
gpt4 key购买 nike

我正在一个项目中工作,我必须在不同的模式中保存相同的信息

例如我有这个实体

@Entity
@NamedQuery(name = "Cliente.findAll", query = "SELECT c FROM Cliente c")
public class Cliente implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@SequenceGenerator(name = "CLIENTE_CLICODIGO_GENERATOR", sequenceName = "CLIENTE_CLI_CODIGO_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "CLIENTE_CLICODIGO_GENERATOR")
@Column(name = "cli_codigo")
private Integer cliCodigo;

@Column(name = "cli_activo", columnDefinition = "bool default true")
private Boolean cliActivo = true;

保存数据的方式是:

@PersistenceContext
EntityManager entityManager;

public void guardarCliente(Cliente clienteSeleccionado) throws Exception {
if (clienteSeleccionado.getCliCodigo() == null) {
entityManager.persist(clienteSeleccionado);
} else {
entityManager.merge(clienteSeleccionado);
}

}

目前它可以工作并保存在我的公共(public)模式中,但是我不知道如何保存在同一数据库中的不同模式中。

我在重复的实体中思考,但当我尝试时,出现错误

最佳答案

您将需要多个持久性上下文,每个模式一个。然后您可以使用这些上下文来保存/合并实体。

@PersistenceContext(unitName="schema_1")
EntityManager entityManagerS1;

@PersistenceContext(unitName="schema_2")
EntityManager entityManagerS2;

public void guardarCliente(Cliente clienteSeleccionado) throws Exception {
if (clienteSeleccionado.getCliCodigo() == null) {
entityManagerS1.persist(clienteSeleccionado);
entityManagerS2.persist(clienteSeleccionado);
} else {
entityManagerS1.merge(clienteSeleccionado);
entityManagerS1.merge(clienteSeleccionado);
}
}

关于java - 使用实体管理器在多个模式中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60061264/

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