Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring data jpa—包含表中所有可能值的字段_Java_Hibernate_Spring Boot_Spring Data Jpa - Fatal编程技术网

Java Spring data jpa—包含表中所有可能值的字段

Java Spring data jpa—包含表中所有可能值的字段,java,hibernate,spring-boot,spring-data-jpa,Java,Hibernate,Spring Boot,Spring Data Jpa,使用Spring Boot和Spring Data JPA,我有一个表示枚举值的表,以及一个对应的实体,我希望其中一个字段是“枚举可以具有的所有可能值”,即一个字段possibleValues,它将是另一个表上的全选。最好我不想拥有像@manytomy这样的关系,因为: 它将始终是全选,我不想将所有选项保存到数据库中,并在每次枚举值表更改时更新它们 我将有几个枚举,因此对于每个枚举,创建另一个多对多枚举并不理想 我试图找到类似于@Formula的东西,它可以让我从另一个表中选择所有值,但似乎不起

使用Spring Boot和Spring Data JPA,我有一个表示枚举值的表,以及一个对应的实体,我希望其中一个字段是“枚举可以具有的所有可能值”,即一个字段
possibleValues
,它将是另一个表上的全选。最好我不想拥有像
@manytomy
这样的关系,因为:

  • 它将始终是全选,我不想将所有选项保存到数据库中,并在每次枚举值表更改时更新它们
  • 我将有几个枚举,因此对于每个枚举,创建另一个多对多枚举并不理想
  • 我试图找到类似于
    @Formula
    的东西,它可以让我从另一个表中选择所有值,但似乎不起作用:

    @Transient
    @公式(“从枚举表e中选择e.name”)
    私有列表可能值;
    


    结果是,
    可能值
    总是为空,如果我删除了
    @Transient
    ,我必须定义这两个实体之间的关系。

    对于数据库中的枚举值,我建议使用字符串(对于对象,可以在存储前使用JSON进行转换,在检索后使用JSON进行转换)

    对于数据库中的枚举值,我建议使用字符串(对于对象,可以在存储之前使用JSON进行转换,在检索之后使用JSON进行转换)

    为什么需要枚举表?您可以将其作为代码库中静态值的一部分。它们不像代码中那样严格地枚举,而是一个包含更多数据的可能值列表,加上它们具有i18n属性。在这种情况下,您更愿意将其作为实体添加,因为hibernate忽略了
    公式
    ,因为它标记为
    瞬态
    将其作为实体添加是什么意思?如果它是类中的一个属性
    列表
    ,我仍然需要定义一个关系或使其成为
    @Transient
    。我需要此列表始终包含
    EnumEntity
    的所有可能值,为什么它甚至应该是您的实体的一部分?如果您需要它以HTML形式显示,只需检索它并将其放入集合中,不要试图将其硬塞进您的实体中,因为它根本不属于那里。为什么需要一个枚举表?您可以将其作为代码库中静态值的一部分。它们不像代码中那样严格地枚举,而是一个包含更多数据的可能值列表,加上它们具有i18n属性。在这种情况下,您更愿意将其作为实体添加,因为hibernate忽略了
    公式
    ,因为它标记为
    瞬态
    将其作为实体添加是什么意思?如果它是类中的一个属性
    列表
    ,我仍然需要定义一个关系或使其成为
    @Transient
    。我需要此列表始终包含
    EnumEntity
    的所有可能值,为什么它甚至应该是您的实体的一部分?如果您需要它以HTML形式显示,只需检索它并将其放入集合中,不要试图将其硬塞进您的实体中,因为它根本不属于该实体。您能详细说明原因吗?还有,它是如何解决问题的?任何对象都可以转换为JSON字符串,然后将字符串存储到数据库中,当您检索出JSON字符串时,您可以将其转换回对象。当然,您可能需要另一列来指示实际类型,例如图书对象等。我仍然不明白这是如何解决原始问题的-它如何帮助您使用
    @Formula
    来检索所有实体?它与@Formula无关,它更像是一个通用的解决方案。好的,它是如何解决问题的?我将如何获得所有可能的值?您能否详细说明原因?还有,它是如何解决问题的?任何对象都可以转换为JSON字符串,然后将字符串存储到数据库中,当您检索出JSON字符串时,您可以将其转换回对象。当然,您可能需要另一列来指示实际类型,例如图书对象等。我仍然不明白这是如何解决原始问题的-它如何帮助您使用
    @Formula
    来检索所有实体?它与@Formula无关,它更像是一个通用的解决方案。好的,它是如何解决问题的?如何获得所有可能的值?