A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一、错误一“must specify an identifier type: cn.itcast.store.domain.Student”
原因为:id未指定名称
二、错误二:Repeated column in mapping for entity: cn.itcast.store.domain.Order column: customer_id (should be mapped with insert="false")
原因为,应该在多端加入insert="false" update="false"
三、inverse="true"在many-to-one中是不能设置的,只要在one的一端才可以设置inverse。inverse=true 的为被动方, 由主动方负责维护关联关系。一般
在one一方设置inverse=true,由多方集合端管理关系

四、用注解生成表
注:1、以下只例举出了部分代码, 其中的@Entity,@table,@Id,@GeneratedValue都与其前的配置很类似
    2、注解部分代码可以写在属性上,也可以放到属性get方法上
    3、如果用注解和配置同时对一个表进行操作,最后启作用的是配置文件,注解将会失效
    4、 注解语句后面不能加分号
(1) 一对多的关系,举例(mother,childs),会自动在多方表的后端增加一方的主键作为外键关联字段
Mother(作为一端):
       @OneToMany(targetEntity=Childs.class,mappedBy("mother"))
       private Set<Childs>childs=new HashSet<Childs>();
Childs(作为多端)
       @ManyToOne(targetEntity=Mother.class)
       private Mother mother;
(2)多对多的关系,举例(students,course),多对多的要点是会自动生成第三张表,该表中的列由两张基表的主键生成
Students(两边都是多端)
      @ManyToMany(targetEntity=Course.class)
      @JoinTable(name="students_couses",
     joinColumns=@JoinColumn(name="student_id"),
     inverseJoinColumns=@JoinColumn(name="couse_id"))
      private Set<Course>course=new HashSet<Course>();
Course(两边都是多端)
     @ManyToMany(targetEntity=Students.class,mappyedBy="couses")
     private Set<Students>students=new HashSet<Students>();
(2)一对一的关系(company,address)事实上有两种方法可以设置一对一的关键,把一方设为<many-to-one)
通过配置文件方式
Company:<class name="cn.itcast.store.domain.Company" table="company" catalog="annotationTest">
        <id name="id">
    <generator class="increment"></generator>
    </id>
    <property name="name"></property>
    <one-to-one name="address" class="cn.itcast.store.domain.Address"></one-to-one>
    </class>
Address:<class name="cn.itcast.store.domain.Address" table="address" catalog="annotationTest">
        <id name="id">
        <generator class="foreign">//主键依赖于company表
        <param name="property">company</param>
        </generator>
        </id>
        <property name="name"></property>                                    //constrained="true"表示有外键约束性
        <one-to-one name="company" class="cn.itcast.store.domain.Company" constrained="true"></one-to-one>
        </class>
五、查询的时候,查询条件中的命名参数和位置参数,以及查询条件为按实体查询,为第三种情况
HQL写法:
(1)Customer customer1 = (Customer) session.createQuery("from Customer where name = ?").setParameter(0, "tom").uniqueResult();
(2)Customer customer2 = (Customer) session.createQuery("from Customer where name = :cname").setParameter("cname", "tom").uniqueResult();
(3)List list2 = session.createQuery("from Order where customer = ?").setEntity(0, customer).list();

8 个回复

倒序浏览
看不懂。。。
回复 使用道具 举报

我没有梳理,自己的程序中出现的错
回复 使用道具 举报
这是安卓课程中学的?
回复 使用道具 举报
懒锋2015 发表于 2015-7-2 11:47
这是安卓课程中学的?

JavaEE的视频教程
回复 使用道具 举报

哦,难怪!我说在安卓的基础视频里没看到这个东西。多学点Java很有必要
回复 使用道具 举报
懒锋2015 发表于 2015-7-2 11:55
哦,难怪!我说在安卓的基础视频里没看到这个东西。多学点Java很有必要

嗯,是的。你在安卓几期,已经在北京了吗
回复 使用道具 举报
乌卡卡 发表于 2015-7-2 12:28
嗯,是的。你在安卓几期,已经在北京了吗

呃,还没。打算去上海上安卓班
回复 使用道具 举报
懒锋2015 发表于 2015-7-2 12:35
呃,还没。打算去上海上安卓班

噢噢,多交流噢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马