Spring JPA中相同表的动态模式



我有一个Orders表。实体类

@Entity
@Table(name = "orders", schema = "myschema")
public class Orders {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

现在我希望模式在运行时应该动态更改。我在数据库(PostgresSQL(中有两个不同的模式(public和myschema(,它们都有相同的表,但基于它应该调用模式的条件。有办法做到吗?

这是我的JPA级

public interface OrdersRepository extends JpaRepository<Orders, Integer> {
@Query(value = "SELECT * From  secondpublic.orders", nativeQuery = true)
public List<Orders> findAllSecondOrders();
@Query(value = "SELECT * From public.orders", nativeQuery = true)
public List<Orders> findAllPublicOrders();
}

控制器类

@RestController
@RequestMapping("/orders")
public class OrdersController {

@Autowired
private OrdersRepository ordersRepo;
@Value("${name}")
private String name;

@GetMapping()
public List<Orders> getEmployees(@RequestParam String mode) {
return ordersRepo.findAll();
}
}

根据某些条件,模式应该是可变的/动态的。

@表(名称="订单",模式="{myschema}"(

您正在寻找的是基于模式的多租户。请参阅Hibernate文档,了解如何配置:https://docs.jboss.org/hibernate/orm/5.6/userguide/html_single/Hibernate_User_Guide.html#multitenacy-独立模式

您可以在项目中使用多租户,

您可以在baeldung 上找到一份好的文档

我希望它能有所帮助!

最新更新