Mat*_*att 4 java spring hibernate jpa
我曾经知道如何做到这一点,但对于我的生活,我什至不记得要谷歌搜索什么!我有一堆 POJO,每个都有一些简单的字段(基元、字符串等),我只想将它们全部添加到父 POJO 中,并将整个批次一起存储为单个表中的一行(无需将每个字段从子 POJO 复制并复制到父 POJO 中)。我相信有一个注释,或者一个 Hibernate 转换器,我可以很容易地使用它来做到这一点?
例如,假设我有:
class A {
Integer foo;
String bar;
}
class B {
Integer lol;
String rofl;
}
Run Code Online (Sandbox Code Playgroud)
我想要一个父对象,如:
@Entity
class P {
A a;
B b;
}
Run Code Online (Sandbox Code Playgroud)
其中将有一个数据库模式 foo,bar,lol,rofl
非常感谢任何帮助!
我认为您有 2 个类,具有一些共同的属性。所以你想创建另一个公共类,它应该与这些类一起使用,但不会映射到数据库中的任何特定表(我的意思是这个公共类将存在/将仅在应用程序级别处理)。像考虑 2 类学生和教师,具有一些共同属性,如姓名、性别等。所以现在可以将这些共同属性推送到一个共同类中,例如人类。因此,如果是这种情况,请执行以下操作:
@Embeddable
public class Human{
private String name;
private String gender;
//Constructors, getters & setters
}
Run Code Online (Sandbox Code Playgroud)
现在创建一个特定的类,比如 Student
public class Student{
@Embedded
private Human human;
private String rollNo;
//....
//Constructors, getters & setters
}
Run Code Online (Sandbox Code Playgroud)
等等对于教师类。
现在您可以保存这些条目,例如:
Human human = new Human();
human.setName("your-name");
//....
Student student = new Student();
student.setHuman(human);
student.setRollNo("343");
//....
Run Code Online (Sandbox Code Playgroud)
并保存它
studentRepository.save(student);
Run Code Online (Sandbox Code Playgroud)
所以在数据库中,只会为学生保存一条记录(姓名,性别,rollNo ...)。因为在这种情况下,Human 只是 Student 参数的组合,而不是一个实体。
| 归档时间: |
|
| 查看次数: |
2908 次 |
| 最近记录: |