Ste*_* K. 2 java orm hibernate jpa hibernate-mapping
在我的用例中,我想要一个实体中的@Embedded
一个类C
.
另一个实体是指C
与@OneToMany
关联,并因此C
都被注解@Entity
.
我知道这似乎是糟糕的设计,但我相信它在我的情况下非常有意义.
是否有可能强制Hibernate嵌入实体?如果我尝试一下,Hibernate抱怨缺少c的id属性的setter.
我认为问题来自于:
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private Long id;
Run Code Online (Sandbox Code Playgroud)
为什么不创建您想要的实体,并在该实体中嵌入C.这样,在两个类中都有C,一个是嵌入式的,另一个是新实体的嵌入式.
@Embeddable
public class Contact {
private String firstname;
private String lastname;
// getters and setters removed.
}
Run Code Online (Sandbox Code Playgroud)
这是你的嵌入类:
@Entity
public class Student {
@Embedded
private Contact contact;
}
Run Code Online (Sandbox Code Playgroud)
这里也是嵌入联系的新实体
@Entity
public class FirmContact {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int contactId;
@Embedded
private Contact contact;
}
Run Code Online (Sandbox Code Playgroud)
最后,坚持联系的班级必须是一个实体:
@Entity
public class Business {
@OneToOne(cascade=CascadeType.ALL)
private FirmContact contacts;
}
Run Code Online (Sandbox Code Playgroud)
在java中填充对象只需要几个额外的步骤,但它应该进行你想要的映射.我希望这有帮助.