Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 基本类型映射的休眠条件_Java_Hibernate_Collections_Mapping - Fatal编程技术网

Java 基本类型映射的休眠条件

Java 基本类型映射的休眠条件,java,hibernate,collections,mapping,Java,Hibernate,Collections,Mapping,我有一个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) {

我有一个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类{
私人长id;
私人地图;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@ElementCollection(targetClass=String.class,fetch=FetchType.EAGER)
公共映射getSomeMap(){
返回someMap;
}
公共空间集合地图(地图集合地图){
this.someMap=someMap;
}
}
B类{
私人长id;
私人A;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
@奥内托内
公共A getA(){
返回a;
}
公共无效setA(A){
这个a=a;
}
}
C类{
私人长id;
...
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
公共长getId(){
返回id;
}
公共无效集合id(长id){
this.id=id;
}
}

如何进行查询(使用条件)以获取所有具有“a”的“b”,例如,“test”作为“someMap”中的值?或者我只能用clear sql来完成吗?

很有趣。我从来没有做过一个映射,其中key是对象,string是值。一般来说,情况正好相反。你能把字符串保持在C上,并使用一个直接的集合吗?或者这里是否存在一种奇怪的多对多关系?

您应该发布有关映射的详细信息。发布您的hbm.xml文件或用于映射的注释。更新有关映射的信息。使用映射是常规情况,我经常使用这种方式。在我的例子中,将字符串保留在C中是不可接受的。现在我对查询有一些问题,因为字符串不是实体,所以我可以把它作为限制条件放在条件中。我找到了一种解决问题的方法——在实体类中包装字符串,然后编写漂亮的条件,但我想不包装就解决它。我怎么做?