当前位置: 首页 > news >正文

hibernate 关系映射之 单向外键关联一对一

这里的关系指的是对象与对象之间的关系

 

注解方式单向关联一对一:

 

//这个类描述的husband是一个对应一个wife的

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;

@Entity
public class Husband {
    private int id;
    private String name;
    private Wife wife;
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
   
    public String getName() {
        return name;
    }
   @OneToOne
   @JoinColumn(name="wifeId")//指定生成的表该外键的字段名,不指定会自动生成系统默认的字段名wife_id
    public Wife getWife() {
        return wife;
    }
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
    public void setWife(Wife wife) {
        this.wife = wife;
    }
   
}

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Wife {
    private int id;
    private String name;
   
    @Id
    @GeneratedValue
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
   
}

 

测试类:

package com.bjsxt.hibernate;

import java.util.Date;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

public class HibernateORMappingTest {
    private static SessionFactory sessionFactory;
   
    //@BeforeClass
    public static void beforeClass() {
            sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();
    }
    //@AfterClass
    public static void afterClass() {
        sessionFactory.close();
    }
   

    @Test
    public void testSchemaExport() {
        new SchemaExport(new AnnotationConfiguration().configure()).create(false, true);//配置了log4j可以看到生成语句
    }
   
    public static void main(String[] args) {
        beforeClass();
    }
}

 

配置文件

<hibernate-configuration>

……

        <mapping class="com.bjsxt.hibernate.Husband"/>
        <mapping class="com.bjsxt.hibernate.Wife"/>

    </session-factory>

</hibernate-configuration>

 

 

    </session-factory>

</hibernate-configuration>

 

 

xml方式:

 

 StuIdCard.hbm.xml

 

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
    <class name="com.bjsxt.hibernate.StuIdCard">
        <id name="id">
            <generator class="native"></generator>
        </id>
       
        <property name="num"/>
        <many-to-one name="student" column="studentId" unique="true"></many-to-one><!-- unique唯一的,manytoone是多对一,加上unique就是一对一了,表示StuIdCard单向一对一对应 student,name设为本类的student属性(StuIdCard类中要定义private Student student属性),column表示用哪个字段作为外键关联字段 -->
    </class>
   
</hibernate-mapping>

相关文章:

  • (转)原始图像数据和PDF中的图像数据
  • 基于HTML5技术的电力3D监控应用(四)
  • 创客运动引发第三次工业革命
  • php错误级别的设置方法
  • 案例参考:分享一个回报率1:3.5的热门竞价赚钱项目
  • paip.调试js 查看元素事件以及事件断点
  • UBUNTU 12.04安装ORACLE
  • 一段小代码
  • sso单点登录研究
  • 字符串处理总结之一(C#String类)
  • 独立游戏开发者如何利用媒体造势
  • iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突
  • fork/join使用示例
  • Tomcat6.0 for Linux X86_64 Install
  • HLSL学习实践记录: RenderMonkey实现(三):天空盒子
  • Android框架之Volley
  • Git学习与使用心得(1)—— 初始化
  • Js基础——数据类型之Null和Undefined
  • Python利用正则抓取网页内容保存到本地
  • react-native 安卓真机环境搭建
  • SpiderData 2019年2月16日 DApp数据排行榜
  • Zsh 开发指南(第十四篇 文件读写)
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 区块链技术特点之去中心化特性
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 用element的upload组件实现多图片上传和压缩
  • 责任链模式的两种实现
  • 7行Python代码的人脸识别
  • 移动端高清、多屏适配方案
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 计算机视觉入门
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1)STL算法之遍历容器
  • (2.2w字)前端单元测试之Jest详解篇
  • (5)STL算法之复制
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (五)IO流之ByteArrayInput/OutputStream
  • (五)网络优化与超参数选择--九五小庞
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)德国人的记事本
  • .libPaths()设置包加载目录
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .Net6使用WebSocket与前端进行通信
  • .NET企业级应用架构设计系列之结尾篇
  • .pub是什么文件_Rust 模块和文件 - 「译」
  • @我的前任是个极品 微博分析