gpt4 book ai didi

java - 使用 Jpa 将相同的实体保存在不同的表(相同的架构)中

转载 作者:行者123 更新时间:2023-12-02 01:01:53 26 4
gpt4 key购买 nike

我使用 spring data JPA 存储库将数据保存到我的表中。

在一种情况下,我必须将数据存储在两个不同的表中。这两个表具有完全相同的架构。但我只能存储在一张表中,因为 JpaRepository 只映射到一张表。

示例:

@Entity
@Table(name="users")
class User {
private Long userId;
private String firstName;
private String lastName;
}

interface MyRepo1 extends JpaRepositories<User,Long> {
}

interface MyRepo2 extends JpaRepositories<User,Long> {
}

有没有办法将单个实体映射到多个 JpaRepositories 中?因此,当我调用 MyRepo1.save(user) 时,它保存在 Users 表中,当我调用 MyRepo2.save(user) 时,它保存在 BackupUsers(与 Users 完全相同的架构)表中。

谢谢

最佳答案

您应该有两个不同的实体,例如 User 实体 AppUser 实体,每个实体都指向不同的表,如下所示,假设这两个表名称为 usersapp_users :

@Entity
@Table(name="users")
public class User extends SuperUser {...}

@Entity
@Table(name="app_users")
public class AppUser extends SuperClass {...}

当然,为了避免代码重复,您可以将表字段放在名为 SuperClass 的父类(super class)中,例如:

    @Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class SuperUser {
@Id
private Long userId;
private String firstName;
private String lastName;
// getters and setters, constructors
}

之后,您需要为每个实体类创建两个存储库:

public interface UserRepository extends JpaRepositories<User, Long> {
}

public interface AppUserRepository extends JpaRepositories<AppUser,Long> {
}

注意:最后,完全不建议使用两个包含相同字段的表。

关于java - 使用 Jpa 将相同的实体保存在不同的表(相同的架构)中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60550046/

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