在 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;
...
}
这些实体之间还没有映射关系,也没有任何东西可以用作任何一方的外键。
无论如何,是否可以定义一个映射,它插入 属性 的 value 和 key="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。
我们的应用程序使用 table 将应用程序范围的设置存储在 属性 table 中,如下所示(使用 JPA):
public class Property {
String key; // primary key
String value;
}
我们的一个实体需要在静态字段中具有这些属性之一,一个用于文件存储的基本目录(对于这种类型的所有实体都是相同的)(它不需要是静态的,但它有道理)。
public class FileEntity {
public static String BASE_DIR;
...
}
这些实体之间还没有映射关系,也没有任何东西可以用作任何一方的外键。 无论如何,是否可以定义一个映射,它插入 属性 的 value 和 key="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。