首页 > 解决方案 > 如何映射java对象和java对象映射之间的关系

问题描述

我有一个名为的 java 对象

public class MyObject {

@ElementCollection 
Map<Integer, AnotherJavaObject> customMap;
}

public class AnotherObject {

String value;
int value;
}

这可以通过休眠实现吗?另一个对象是实体吗?MyObject 类中的映射应该是什么?

阅读后,我将 AnotherObject 注释如下

@Entity(name = "AnotherObject")
public class AnotherObject {

@ManyToOne
Myobject myObject;
}

And in the MyOBject class created a @OneToMany mappng as

@OneToMany(mappedBy="myObject)
AnotherObject anotherObject;

但这给了我一个错误

org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: MyObject.anotherObject

所以我通过注册课程来克服这个错误,但我在合并时遇到这个错误

object references an unsaved transient instance - save the transient instance before flushing:

标签: javahibernatehashmap

解决方案


试试这个

public class MyObject {

    int id;

    @ManyToMany
    @JoinTable(
        name="AuthorBookGroup",
        joinColumns={@JoinColumn(name="fk_myobject", referencedColumnName="id")},
        inverseJoinColumns={@JoinColumn(name="fk_anotherobject", referencedColumnName="id")})
    @MapKey(name = "value2")
    Map<Integer, AnotherJavaObject> customMap;
}

public class AnotherObject {

    String value1;
    int value2;
    int id;
}

推荐阅读