Embeddable Class 之内,可以使用 @OneToMany

@Entity
public class H {
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	int id;
	String name;
	@Embedded
	I i;
}

@Embeddable
public class I {
	String iName;
	@OneToMany(cascade = { PERSIST, REMOVE })
	List<J> j = new ArrayList<J>();
}

@Entity
public class J {
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Id
	int id;
	String name;
}

以上code,Class H中嵌入Class I,Class I与Class J单向一对多,I不会生成表格,I中的属性会作为字段存在H表中。
若把Class I中的iName改成name,就像Class H中的,那么,生成数据库时,不会有任何提示,没有异常!表格H中只会有一个name字段。向数据库中插入数据时,就有异常抛出了。
于是乎,使用Embeddable,命名真是需要十分关注的...
以上,ElipseLink与OpenJPA下都一样。

你可能感兴趣的:(java,J#)