Java 使用复合密钥休眠单向OneToMany
我想把Hibernate和OneToMany的关系框起来 父项具有复合主键,子项具有主键(hibernate自动生成)。下面是我的工作示例代码:Java 使用复合密钥休眠单向OneToMany,java,hibernate,composite-primary-key,hibernate-onetomany,Java,Hibernate,Composite Primary Key,Hibernate Onetomany,我想把Hibernate和OneToMany的关系框起来 父项具有复合主键,子项具有主键(hibernate自动生成)。下面是我的工作示例代码: class Parent{ @EmbeddedId private ParentPk parentPk; @OneToMany( mappedBy="parent") private List<ChildType1>; @OneToMany( mappedBy="parent") pri
class Parent{
@EmbeddedId
private ParentPk parentPk;
@OneToMany( mappedBy="parent")
private List<ChildType1>;
@OneToMany( mappedBy="parent")
private List<ChildType2>;
@OneToMany( mappedBy="parent")
private List<ChildType3>;
//--setters and getters
}
@Embeddable
public class ParentPk {
private Long parentId;
private BigDecimal version;
//..setters and getters
}
class ChildType1{
@Id
private Long childId;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumns({ @JoinColumn(name = "parentId"),
@JoinColumn(name = "version") })
private Parent parent;
//..other fields and setters and getters
}
//--ChildType2 and ChildType3 like above
类父类{
@嵌入ID
私人家长;
@OneToMany(mappedBy=“家长”)
私人名单;
@OneToMany(mappedBy=“家长”)
私人名单;
@OneToMany(mappedBy=“家长”)
私人名单;
//--二传手和接球手
}
@可嵌入
公共类ParentPk{
私人长父ID;
私有大十进制版本;
//…二传手和接球手
}
类别ChildType1{
@身份证
私人长童;
@多通(级联=级联类型.ALL)
@JoinColumns({@JoinColumn(name=“parentId”),
@JoinColumn(name=“version”)}
私人家长;
//…其他字段和setter和getter
}
//--上面的ChildType2和ChildType3类
但现在我想将上面的模型建模为一对多单向关系,即子类不应该引用父类(希望在子类中省略父实例)。可能吗?示例方法:
@实体
班级家长{
@嵌入ID
私人家长;
@独身癖
@列({
@JoinColumn(name=“parentId”,referencedColumnName=“parentId”),
@JoinColumn(name=“version”,referencedColumnName=“version”)
})
私人名单儿童1;
//与children1的注释完全相同
私人名单儿童2;
//与children1的注释完全相同
私人名单儿童3;
//…其他字段和setter和getter
}
@实体
类别ChildType1{
@身份证
私人长童;
//…其他字段和setter和getter
}
//--上面的ChildType2和ChildType3类
是的,这是可能的。将JoinColumns注释放在父类的列表上。