gpt4 book ai didi

java - hibernate中的一对多映射: Referring two different properties to a single column

转载 作者:行者123 更新时间:2023-12-02 07:40:46 24 4
gpt4 key购买 nike

[此场景仅供引用]
我有某些产品,每个产品都可以有评论。评论有两种类型,一般评论(GC) 和产品评论 (PC)。

示例表

PRODUCT

ID NAME


1 APPLE

--

PRODUCT_COMMENTS

COMMENT_ID | COMMENT | COMMENT_TYPE


1 | IPHONE IS GOOD | PC

2 | IPAD LOOKS GOOD |GC

3 | GENERAL COMMENT| GC

4 | PRODUCT COMMENT |PC

假设 Product 表到 Product_comment 表有一个外键。

我有几个类映射到这些表。

产品类和ProductComment类

Product 类与 ProductComment 类具有一对一的关系。

  public class Product {
private Long id;

private String productName;

private List<ProductComments> productComments;

private List<ProductComments> generalComments;

.....

}

现在我的问题是,有两个单独的评论列表(按 comment_type 区分)。

当我说

      Product p = (Product)session.load(Product.class, new Long(1));

是否可以正确获取generalComments和productComments?在上面的例子中

generalComments 列表应包含 ['IPAD LOOKS GOOD','GENERAL COMMENT'],productComments 列表应包含 ['IPHONE IS GOOD','PRODUCT COMMENT']。

应该进行什么样的映射才能实现上述目标?

编辑:

我们使用 Hibernate 3.0 和 hbm 映射文件(不是注释)。

最佳答案

使用@Where注解。您可以给出 SQL 条件来限制将选择哪些。在您的示例中,大致如下:

@Where(clause="COMMENT_TYPE = 'PC'")
private List<ProductComments> productComments;

@Where(clause="COMMENT_TYPE = 'GC'")
private List<ProductComments> generalComments;

请注意,此限制值是从数据库加载的,而不是写入这些列表的值。您仍然可以通过程序逻辑控制将哪种注释写入这些列表。

关于java - hibernate中的一对多映射: Referring two different properties to a single column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636136/

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