初学hibernate,这个该写什么annotation啊?

问题描述

我知道这个设计的关系有点乱,但是假如存在的话该怎么映射这个leader属性呢,非常感谢public class Tutor { private Long id; @OneToMany private List<Student> students; //这里怎么写注释呢。。。 private Student leader; public Student getLeader() { return Leader; } public void setLeader(Student leader) { Leader = leader; } public Tutor() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; }}@Entitypublic class Student { private Long id; @ManyToOne private Tutor tutor; public Tutor getTutor() { return tutor; } public void setTutor(Tutor tutor) { this.tutor = tutor; } public Student() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; }} 问题补充:飞雪无情 写道

解决方案

那你这里写错了。不可能有这样的关系的private List<Student> students; //这里怎么写注释呢。。。 private Student leader; 一个导师有很多学生,所以private List<Student> students;是对的。。一个学生应该只有一个导师吧。。那么你应该在你的Student,定义一个private Tutor leader;这样,而不是在Tutor 这个实体里定义
解决方案二:
映射关系可以有多种,但建议不要那么做,可以为本班学生加上备注表明其leader身份。下面是一对一,一对多的映射关系。@Entitypublic class Tutor { private Long id; private List<Student> students; private Student leader; @OneToOne(cascade=CascadeType.ALL,targetEntity=Student.class) @JoinColumn(name="leader_id") public Student getLeader() { return leader; } public void setLeader(Student leader) { this.leader = leader; } @GenericGenerator(name="generator", strategy="increment")@Id@GeneratedValue(generator ="generator")@Column(unique = true, nullable = false) public Long getId() { return id; } public void setId(Long id) { this.id = id; } @OneToMany(mappedBy="tutor",cascade=CascadeType.ALL,fetch=FetchType.LAZY) public List<Student> getStudents() { return this.students; } public void setStudents(List<Student> students) { this.students = students; } } @Entity public class Student { private Long id; private Tutor tutor; @ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) @JoinColumn(name="tutor_id") public Tutor getTutor() { return tutor; } public void setTutor(Tutor tutor) { this.tutor = tutor; } @GenericGenerator(name="generator", strategy="increment")@Id@GeneratedValue(generator = "generator")@Column(unique = true, nullable = false) public Long getId() { return id; } public void setId(Long id) { this.id = id; } }
解决方案三:
这是一对一的关系 这样@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name = " leader_id " )这个name你可以该成你的表里的列名

时间: 2024-09-20 04:12:32

初学hibernate,这个该写什么annotation啊?的相关文章

hibernate(jpa)复合主键annotation声明方法

在设计数据库表的时候,往往会设计出带有复合主键的表,即表的记录由多 个字段联合标识,如: 表 CREATE TABLE TB_HOUR_DATA ( STAT_DATE DATE NOT NULL, PATH_ID NUMBER(20) NOT NULL, VALUE VARCHAR2(512 BYTE), TYPE NUMBER(1) NOT NULL ) 其中,复合主键为(STAT_DATE,PATH_ID,TYPE) 针对这种情况,hibernate(jpa) 的 annotation 映

io-[java初学]求教为什么这样写不能退出while循环

问题描述 [java初学]求教为什么这样写不能退出while循环 package io;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class SystemIndemo { public static void main(String[] args) throws Exception{ InputStream in = System.in; Inp

java-JAVA问题:初学Hibernate框架时遇到的疑问

问题描述 JAVA问题:初学Hibernate框架时遇到的疑问 报的错误是:Duplicate property mapping of dirId found in com.cailikun.Product 解决方案 你上图框住的配置跟上面的那个property标签指定的同名dirId重复了,many-to-one和property都是配置表列和类属性映射关系的,一个列只能用一个标签.你同时配两个,当然报错了! 解决方案二: dir_id出现了例名重复的错误.我初学的时候也学过了,你要用一个不同

初学hibernate框架

今天初次学习了hibernate,学习了hibernate的一些原理性知识.hibernate是基于ORM的持久层框架,它对JDBC进 行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库.ORM(Object Relation Map)即对象关系映射,其映射方式有两种:①注解映射,②xml配置文件映射,其中第一种方式比较简单,但是耦合对要高,第二种方式虽然要复杂一点但是 耦合度相对低了很多,因为我们开发系统都追求高内聚.低耦合,所以第二种方式较常用. 使用hi

初学Hibernate貌似出现驱动错误

问题描述 信息:RDBMS:Oracle,version:Oracle9iEnterpriseEditionRelease9.0.1.1.1-ProductionWiththePartitioningoptionJServerRelease9.0.1.1.1-Production2010-12-38:49:39org.hibernate.cfg.SettingsFactorybuildSettings信息:JDBCdriver:OracleJDBCdriver,version:9.0.1.1.0

某人初学javascript的时候写的学习笔记_javascript技巧

复制代码 代码如下: /* * JavaScript对象就是一组属性(方法)的集合 * 在该语言中如果变量名或方法名不符合声明规范, * 则一定得用方括号" [] "引用它 * */ /** * <1.>该语句声明了一个class1类,class1相当于构造方法,又叫构造器 * 也可说声明了一个class1方法 */ function class1(){ this.name="xjl"; //给对象添加属性 this.say= function(){al

【HIBERNATE框架开发之七】HIBERNATE使用ANNOTATION中各种关系映射的CRUD(增删改查)&amp;&amp;集合映射&amp;&amp;继承映射

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/822.html       首先对于Annotation中CRUD的C(Create)操作:-------- 假设 :   User (MonyToOne)       Group OK,那么有如下 Junit Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Conf

初学java 感觉写的程序很乱,没有美感

问题描述 小弟初学java,感觉写出来的程序乱糟糟,有时候能写出一个很长的类,里面什么都有,没有美感,看过一些高手写的程序,觉得他们写的看起来真舒服,可是自己就是写不会...郁闷,请问写程序有什么原则或者应该按什么准则写才会有美感啊,我写的程序总是感觉乱. 解决方案 解决方案二:呵呵,你用过IDE么,建议用Eclipse,用IDE会让代码显得更美观解决方案三:只要你想要实现一个功能的时候,相应代码就写成一个方法,别把所有的都写在一起多分类,能写成方法的都最好写成方法解决方案四:见多了,写多了,代

java之annotation与框架的那些秘密

在大家使用spring MVC或Hibernate 3.0以上的版本时,可能会注意到annotation带来的方便性,不过这往往让人觉得annotation真的很强大,而这算是一种接近错误的理解吧,annotation其实本身是属于一种文档注解的方式,帮助我们在编译时.运行时.文档生成时使用,部分annotation其实基本和注释差不多,这里其实是要说下annotation的原理,以及各种功能在它上面如何实现的,以及在继承的时候,他会发生什么?为什么会这样? 首先,就我个人使用的理解,annot