在 JPA 中映射来自不同 table 的静态字段

Map static field from different table in JPA

我们的应用程序使用 table 将应用程序范围的设置存储在 属性 table 中,如下所示(使用 JPA):

public class Property {
    String key; // primary key
    String value;
}

我们的一个实体需要在静态字段中具有这些属性之一,一个用于文件存储的基本目录(对于这种类型的所有实体都是相同的)(它不需要是静态的,但它有道理)。

public class FileEntity {
     public static String BASE_DIR;
     ...
}

这些实体之间还没有映射关系,也没有任何东西可以用作任何一方的外键。 无论如何,是否可以定义一个映射,它插入 属性valuekey="basedir" 进入 BASE_DIR 属性 FileEntity?

BASE_DIR 不是静态的还可以,但是 FileEntity[=28 的所有实例的内容仍然相同=].

可能没有您希望的那么优雅:

@Entity
public class FileEntity {

    private static String BASE_DIR;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

有一个带有@PostConstruct 的属性 服务来初始化你所有的实体

@PostConstruct
public void init() {
    FileEntity.setBaseDir(propertyRepository.findByKey("key1").getValue());
}

加载完所有 bean 后,实体上的静态字段将被设置并属于 class。