第一次到javaeye社区发帖提问,这社区真的不错,还请大家多多指教。
进入正题,问题一,班级和学生是一对多的关系,自己已经通过JPA注解实现了它们的一对多关系,并且生成数据库表也是正确的。tab_student表有三个字段,student_id(主键),student_name,banji_id(外键),而tab_banji表中有banji_id(主键)和banji_name两个字段,我现在的想法是实现插入学生到某个班去,请问怎样才能实现?
还有一个问题,就是我通过注解设置的主键生成策略是auto类型的话,自己不能定义主键值吗?举个例子,现在有个tab_teacher表,它有2个字段,分别是teacher_id和teacher_name,现在我用persist(new Teacher(1,"王老师"))这样插入报错,但是我在实体中加个只有teacher_name属性的构造方法,也就是用persist(new Teacher("王老师"))是可以实现插入的,到数据库表中看到主键是自动增长的。请问大家怎样才能自己定义主键值啊?谢谢大家不吝赐教了。
JPA一对多实现插入的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- hantsy 2009-04-25 18:11关注
1.比较简单,已经理解了jpa一对多的关系。
你可以同时保存班级和学生。如
[code="java"]
public class StudClass implements Serializable {@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;@OneToMany(cascade = CascadeType.ALL, mappedBy = "cls")
private List students=new ArrayList();public StudClass(){}
public StudClass(String name){
this.name=name;
}
// seter and getters
// equlas and hashcode 方法实现public void addStudent(Student s){
this.students.add(s);
s.setCls(this);
}}
[/code]
[code="java"]
public class Student implements Serializable {@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;@ManyToOne
private StudClass cls;public Student(){}
public Student(String name){
this.name=name;
}
// seter and getters
// equlas and hashcode 方法实现}
[/code]
上面代码略去了 setter和getter 方法,equals 和 hashcode 方法的实现,你可以使用IDE 实现。使用时,一个事务中可以这样做
[code="java"]
StudClass c=new StudClass("一班");
Student s1=new Student("同学1");
Student s2=new Student("同学2");c.addStudent(s1);
c.addStudent(s2);em.persist(c);
[/code]
也可以单独添加一个学生到班级中。
[code="java"]
StudClass c=em.find(StudClass.class, id);
Student s1=new Student("同学1");
c.addStudent(s1);[/code]
也可以单独更新Student
[code="java"]
StudClass c=em.getReference(StudClass.class, id);
Student s1=new Student("同学1");
s1.setCls(c);
em.persist(s1;
[/code]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 安装svn网络有问题怎么办
- ¥15 Python爬取指定微博话题下的内容,保存为txt
- ¥15 vue2登录调用后端接口如何实现
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥15 latex怎么处理论文引理引用参考文献