gpt4 book ai didi

java - Spring、Hibernate 实体字段取决于配置文件

转载 作者:行者123 更新时间:2023-12-02 12:57:16 25 4
gpt4 key购买 nike

我有这样的东西:

@Entity
@Table(name = "schedules")
public class ScheduleDO {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "begin_time", columnDefinition = "TIMESTAMP WITH TIME ZONE",
nullable = false)
private OffsetDateTime beginTime;
}

我希望能够根据 Activity 配置文件更改“beginTime”变量注释。像这样的事情:

   @Profile("dev")
@Column(name = "begin_time_dev", columnDefinition = "TIMESTAMP WITH TIME ZONE",
nullable = false)
@Profile("test")
@Column(name = "begin_time_test", columnDefinition = "TIMESTAMP WITH TIME ZONE",
nullable = false)
private OffsetDateTime beginTime;

这样的事情可能吗?

最佳答案

实际上 JPA​​/Hibernate 对 spring 一无所知,因此配置文件超出了它们的范围。此外,实体不是 bean,因此 spring 不使用它们

我能看到的唯一解决方案是定义一个占位符 {profile_begin_time_test} 并添加一个拦截器(请参阅 the example )。

在方法中

public String onPrepareStatement(String sql)

在 hibernate 生成的 sql 中,将 {profile_begin_time_test} 占位符替换为所需的真实列名称。占位符替换可以配置为使用基于 Spring 配置文件的值。

关于java - Spring、Hibernate 实体字段取决于配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44389140/

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