我的Parent
班级有两个子班级:
Child
和ParentHobby
。Child类具有单个PK,并且其@OneToMany
上的映射有效。问题是我不知道如何将其映射到具有复合PK的ParentHobby类。
上级:
//this works
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.EAGER)
private List<Child> childList;
//this DOES NOT work
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent", fetch = FetchType.EAGER)
private List<ParentHobby> hobbyList;
儿童:
@Entity
@Table(name="CHILD")
public class Child {
@Id
@SequenceGenerator(name="CHILD_SEQ", sequenceName="CHILD_DB_SEQ", allocationSize = 1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="CHILD_SEQ")
@Column(name="CHILD_ID")
private long childID;
@JoinColumn(name = "PARENT_ID", referencedColumnName = "PARENT_ID", insertable = true, updatable = true)
@ManyToOne(optional = true)
private Parent parent;
家长爱好:
@Entity @Table(name =“ PARENT_HOBBY”)公共类ParentHobby {
@EmbeddedId
private ParentHobbyPK id;
ParentHobbyPK:
@Embeddable
public class ParentHobbyPK {
@JoinColumn(name = "PARENT_ID", referencedColumnName = "PARENT_ID", insertable = true, updatable = true)
@ManyToOne(optional = true)
private Parent parent;
@Column(name="HOBBY_ID")
private String hobbyID;
我在编译时遇到的异常是:
mappedBy reference an unknown target entity property: ParentHobby.parent in Parent.hobbyList
当子有复合主键时,如何在父实体中定义@OneToMany关系?
您需要使用派生身份。
ParentHobbyPK
应该看起来像这样:
@Embeddable
public class ParentHobbyPK {
@Column(name="HOBBY_ID")
private String hobbyID;
private long parentID; // corresponds to the PK type of Parent
}
ParentHobby
应该看起来像这样(重要的是@MapsId
注释):
@Entity
@Table(name="PARENT_HOBBY")
public class ParentHobby {
@EmbeddedId
private ParentHobbyPK id;
@MapsId("parentID") // maps parentID attribute of the embedded ID
@ManyToOne(optional = true)
@JoinColumn(name = "PARENT_ID", referencedColumnName = "PARENT_ID", insertable = true, updatable = true)
private Parent parent;
...
}
派生身份将在JPA 2.1规范的第2.4.1节中讨论。
我的类有两个子类:和。子类有一个单数PK,其上的映射起作用。问题是我不知道如何将它映射到ParentHobby类上,这个类有一个复合PK。 家长: @entity@table(name=“parent_hobby”)公共类ParentHobby{ ParentHobBypk: 我在编译时遇到的例外情况是: 当子实体具有复合主键时,如何在父实体中定义@OneTomany关系? 相似: @OneTom
问题内容: 我正在用bootspring学习。 一直工作到我进入内部课程为止。 现在,我可以保存新条目,但不能通过Date检索它们 我需要更改什么? 和 抛出此异常: 问题答案: 您应该在存储库中包括嵌入式密钥类的名称,而不是Long。试试这个(未测试): 之后 是您的,是可嵌入类的属性。还有一件事:如果仅使用嵌入式密钥的一部分,那么就不会期望只有一个结果…
我想我有两个实体具有双向的和关联: ——有很多-- 我想选择实体,其中所有关联的实体都将设置为 例如,如果我有以下数据: 起源: 孩子: 我想要一个HQL或JPQL查询,它返回1的实体。 知道吗?
我的问题很简单,但找到解决办法却成了一项相当乏味和困难的任务。 我有两个冬眠实体, (或“父”实体)有三个字段, (实体的集合-关系)。 当从的集合中删除时(从对象的集合中删除和通过Dog存储库从数据库中删除),以及更新所有者的地址,然后尝试将更新后的对象保存到数据库中,将引发以下异常: 解决这个问题的一种方法是,在更新集合后,通过使用调用所有者的,获取的新版本,然后更新所有者的地址并将实体保存到
我使用的是Spring数据jpa。将子实体添加到父实体后,我将父实体保存到数据库。我想得到孩子的身份证,但我发现我得到的是空的。 我在getId()方法中添加了@GeneratedValue(Strategy=GenerationType.IDENTITY),但它不起作用。 以下是模型: 父实体已经在数据库中,所以我直接找到它,父存储库entends Jpa列举 这里是我的测试代码: 我得到的输出
问题内容: 可以说我有两个实体 我现在想要的是,当我获取EntityA时,我想添加一个where子句以获取所有modelPercent大于0的EntityB。 我不想使用过滤器,因为此要求仅适用于这种特殊情况。 例如数据: 我需要一种方法,可能是获取EntityA的hql,以便当我说EntityA.getEntityBList()时,它应该仅返回1条记录(一个模型百分比为10(大于零的记录))。