我有一个hibernate实体类
public class MyComplexClass implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
String name;
int number;
@ElementCollection
Map<String,String> myMap;
@ManyToOne
Simple simple;
public MyComplexClass(String name, int number, Map<String,String> myMap) {
this.name = name;
this.port = number;
this.myMap = myMap;
}
public MyComplexClass() {
// TODO Auto-generated constructor stub
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setNumber(int number) {
this.port = number;
}
public int getPort() {
return port;
}
public void setMyMap(Map<String,String> myMap) {
this.myMap = myMap;
}
public Map<String,String> getMyMap() {
return this.myMap;
}
public Simple getSimple() {
return this.simple;
}
在类中,我有一个表单的映射
@Entity
@Table(name = "Simple")
public class Simple implements Comparable<Simple>, Serializable {
@JsonProperty
@OneToMany(mappedBy="simple",fetch = FetchType.EAGER,cascade = CascadeType.ALL)
List<MyComplexClass> myComplexClass;
public void setMyComplexClass(List<MyComplexClass> myComplexClass) {
this.myComplexClass = myComplexClass;
}
public List<MyComplexClass> getMyComplexClass() {
return this.myComplexClass;
}
系统中的某处我将值设置为
Map<String, String> myMap = new HashMap<String,String>();
myMap.put("value","value");
MyComplexClass myComplexClass = new MyComplexclass("a", 123, myMap)
List<MyComplexClass> myComplexClassList = new ArrayList<MyComplexClass>();
myComplexClassList.add(myComplexClassList)
simple.setMyComplexClass(myComplexClassList);
// save to the database
dao.save(simple);
但是当我得到值为
时Simple simple = dao.getSimple(simple.id);
`simple.getMyComplexClass.get(0).getMyMap.get("value")`
。它返回一个空指针。当我调试时,我看到simple.getMyComplexClass()
本身为null
为什么不返回设置的值?它与数据库或内存缓存有关吗?
在数据库中,我确实在MyComplex类表的外键列中看到一个null,这是原因吗?