【问题标题】:Hibernate Criteria for map of basic type基本类型映射的休眠标准
【发布时间】:2012-10-19 02:17:26
【问题描述】:

我有一个看起来像这样的 Hibernate 映射:

class A {
    private Long id;
    private Map<C,String> someMap;
    ...

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
         return id;
    }

    public void setId(Long id) {
         this.id = id;
    }

    @ElementCollection(targetClass=String.class, fetch=FetchType.EAGER)
    public Map<C, String> getSomeMap() {
        return someMap;
    }

    pubic void setSomeMap(Map<C,String> someMap){
           this.someMap = someMap;
    }
}

class B {
    private Long id;
    private A a;
    ...
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
         return id;
    }

    public void setId(Long id) {
         this.id = id;
    }

    @OneToOne
    public A getA(){
         return a;
    }

    public void setA(A a){
         this.a = a;
    }
}

class C {
    private Long id;
    ...
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
         return id;
    }

    public void setId(Long id) {
         this.id = id;
    }
}

如何进行查询(使用标准)以获取所有具有此类“A”的“В”,例如“test”作为“someMap”中的值?还是只能用clear sql来做?

【问题讨论】:

  • 您应该发布有关您的映射的详细信息。发布您的 hbm.xml 文件或用于映射的注释。
  • 更新了有关映射的信息。

标签: java hibernate collections mapping


【解决方案1】:

有趣。我从来没有做过一个映射,其中键是对象,而字符串是值。一般情况是相反的。您可以将字符串保留在 C 上,并使用直接集合吗?还是这里有一种时髦的多对多关系?

【讨论】:

  • 使用 Map 是常规案例,我经常使用这种方式。在我的情况下 - 将字符串保留在 C 中是不可接受的。现在我在查询方面遇到了一些问题,因为字符串不是实体,所以我可以将它作为限制放在标准中。我找到了一种方法来解决我的问题 - 它将我的 String 包装在 Entity 类中,然后编写漂亮的标准,但我想在不包装的情况下解决它。我该怎么做?
猜你喜欢
  • 2021-05-07
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多