我有一个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 上找到一份好的文档
我希望它能有所帮助!