gpt4 book ai didi

java - 是否可以使用 JPA/Hibernate(最好是 JPA)将数据库表列中的逻辑 OR 值映射到对象列表中?

转载 作者:行者123 更新时间:2023-12-01 05:36:27 25 4
gpt4 key购买 nike

是否可以使用 JPA/Hibernate(最好是 JPA)将数据库表列中的逻辑 OR 值映射到对象列表中?当然,还有一个问题 - 这样做是否有意义,现在很有趣的是知道是否可以做到这一切?

想法如下:

  • 表中有一列,例如
    product_types integer
  • the value for product_types is the logical OR between available product types, where each product type is the enum value having numeric property: numeric value for product type i-th = 1 << (i-1), so 1-st product type numeric value is 1 (binary 0001), 2n-d is 2 (binary 0010), 3-rd is 4 (binary 0100), 4-th is 8 (binary 1000), etc.
  • there are limited number of the available product types (no more than 10, does it matter at all?)

So, suppose we have the value for the product_types = 6 (0110), it means that product 2 and product 3 are used.

I would like to have the following entity class:

@Entity
public class Company {
...
// add some JPA/Hibernate annotation here
List<ProductType> productTypes;
...
}

此外,这应该适用于所有搜索、更新、插入等查询。某种实体监听器或前/后处理器?

P.S.:这是可能的,也许最好使用 @ElementCollection 和存储特定公司可用产品的附加数据库表来做到这一点。我只是好奇所描述的解决方案是否可以实现?

谢谢。

最佳答案

我怀疑是否有一些神奇的 JPA 注释可以进行此类处理。

因此,我会选择 @PostLoad并在那里实现所有必要的操作(即创建 List<ProductType> 属性)。

但是,如果您需要这个 List<ProductType>要可更新,我想您需要额外的 @PrePersist逻辑也实现了。

关于java - 是否可以使用 JPA/Hibernate(最好是 JPA)将数据库表列中的逻辑 OR 值映射到对象列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8123543/

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