- 浏览: 84320 次
- 性别:
- 来自: 广州
文章分类
最新评论
========================== (不加referencedColumnName的时候) ==================
@JoinColumn(name="dividend_id")的情况
@Entity @Table(name="wxsc_order") public class Order extends EntitySupport { private static final long serialVersionUID = 1L; @Column(name="order_id") private String orderId;//订单号 @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)//让Dividend去维护外键关系 @JoinColumn(name="dividend_id") private Dividend dividend;//赠品
@Entity() @Table(name="wxsc_dividend") public class Dividend extends EntitySupport { private static final long serialVersionUID = 1L; @Column(name="dividend_id") private String dividendId;//赠品ID @Column(name="dividend_name") private String dividendName;//赠品名称 @Column(name="dividend_number") private String dividendNumber;//赠品编号 private String attribute;//赠品属性 private int quantity;//数量 @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dividend")//让这个外键生成到order表当中。 @JoinColumn(name="order_id") private Order order;
其映射的关系如下:
mysql> show create table wxsc_dividend; +---------------+--------------------------------------------------------------------------------------------------------------- | Table | Create Table +---------------+--------------------------------------------------------------------------------------------------------------- | wxsc_dividend | CREATE TABLE `wxsc_dividend` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `createTime` datetime NOT NULL, `updateTime` datetime NOT NULL, `version` int(11) NOT NULL, `attribute` varchar(255) DEFAULT NULL, `dividend_id` varchar(255) DEFAULT NULL, `dividend_name` varchar(255) DEFAULT NULL, `dividend_number` varchar(255) DEFAULT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 mysql> show create table wxsc_dividend; +---------------+--------------------------------------------------------------------------------------------------------------- | Table | Create Table +---------------+--------------------------------------------------------------------------------------------------------------- | wxsc_dividend | CREATE TABLE `wxsc_dividend` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `createTime` datetime NOT NULL, `updateTime` datetime NOT NULL, `version` int(11) NOT NULL, `attribute` varchar(255) DEFAULT NULL, `dividend_id` varchar(255) DEFAULT NULL, `dividend_name` varchar(255) DEFAULT NULL, `dividend_number` varchar(255) DEFAULT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8
加了referencedColumnName之后
@JoinColumn(name="dividend_id",referencedColumnName="dividendId")
的情况
@Entity @Table(name="wxsc_order") public class Order extends EntitySupport { private static final long serialVersionUID = 1L; @Column(name="order_id") private String orderId;//订单号 @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.EAGER)//让Dividend去维护外键关系 @JoinColumn(name="dividend_id",referencedColumnName="dividend_id") private Dividend dividend;//赠品
@Entity() @Table(name="wxsc_dividend") public class Dividend extends EntitySupport { private static final long serialVersionUID = 1L; @Column(name="dividend_id") private String dividendId;//赠品ID @Column(name="dividend_name") private String dividendName;//赠品名称 @Column(name="dividend_number") private String dividendNumber;//赠品编号 private String attribute;//赠品属性 private int quantity;//数量 @OneToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="dividend")//让这个外键生成到order表当中。 @JoinColumn(name="order_id",referencedColumnName="order_id") private Order order;
注意:如果赠品是写成(不加@JoinColumn的情况): private String dividendId;//赠品ID 这个时候映射的时候就应该写成: @JoinColumn(name="dividend_id",referencedColumnName="dividendId") private Dividend dividend;//赠品 如果赠品是写成: @Column(name="dividend_id") private String dividendId;//赠品ID 这个时候映射的时候就应该写成: @JoinColumn(name="dividend_id",referencedColumnName="dividend_id") private Dividend dividend;//赠品 这两个第一个是给每取名字的取名字,取了名字的就叫名字。 第二个referencedColumnName就是指定这个关系是要映射到对方那个表的哪个字段上去的。
两边都加了 referencedColumnName 的时候结果如下:
mysql> show create table wxsc_dividend; CREATE TABLE `wxsc_dividend` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `createTime` datetime NOT NULL, `updateTime` datetime NOT NULL, `version` int(11) NOT NULL, `attribute` varchar(255) DEFAULT NULL, `dividend_id` varchar(255) DEFAULT NULL, `dividend_name` varchar(255) DEFAULT NULL, `dividend_number` varchar(255) DEFAULT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `dividend_id` (`dividend_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.01 sec) mysql> show create table wxsc_order; CREATE TABLE `wxsc_order` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `createTime` datetime NOT NULL, `updateTime` datetime NOT NULL, `version` int(11) NOT NULL, `consumer_remarks` longtext, `delivery_time` datetime DEFAULT NULL, `express_number` varchar(255) DEFAULT NULL, `freight_amount` float DEFAULT NULL, `invoice` varchar(255) DEFAULT NULL, `invoice_content` longtext, `invoice_head` longtext, `invoice_type` int(11) DEFAULT NULL, `order_id` varchar(255) DEFAULT NULL, `order_state` int(11) DEFAULT NULL, `order_time` datetime DEFAULT NULL, `payment_confirm_time` datetime DEFAULT NULL, `payment_time` datetime DEFAULT NULL, `seller_remarks` longtext, `total_sum` float DEFAULT NULL, `dividend_id` varchar(255) DEFAULT NULL, `subscriber_id` bigint(20) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `order_id` (`order_id`), KEY `FKD5D59A802C2E77E7` (`subscriber_id`), KEY `FKD5D59A804768DDC7` (`dividend_id`), CONSTRAINT `FKD5D59A804768DDC7` FOREIGN KEY (`dividend_id`) REFERENCES `wxsc_dividend` (`dividend_id`), CONSTRAINT `FKD5D59A802C2E77E7` FOREIGN KEY (`subscriber_id`) REFERENCES `wxsc_subscriber` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)发表评论
-
记录一下我的p2p的UDP打洞过程【云服务器公网版本】
2014-07-19 21:14 2151服务端连接了成功处理了两个客户端的登录并且成功打洞后的log记 ... -
记录一下我的p2p的UDP打洞过程【localhost局域网版本】
2014-07-19 21:08 2044MainServer在两个客户端都启动成功之后并且打洞成功之后 ... -
有hadoop_zookeeper的pom.xml
2014-06-03 23:39 860FROM:http://blog.csdn.net/zph2 ... -
省市县三级联动数据库
2014-06-03 09:42 3211/* *@名称: myaddress.js ... -
Java中的注解机制--比较详细
2014-05-31 17:33 587http://blog.csdn.net/a243932069 ... -
记录一下这次mvn 淘宝的开源MVC框架 Webx的过程
2014-05-24 21:44 848[INFO] ------------------ ... -
恶心的Enum类型
2014-05-24 09:59 696public enum InvoiceType { ... -
分页标签<w:pager>
2014-05-09 17:05 10041.WEB-INF/tlds/pager.tld < ... -
自定义标签taglib
2014-05-09 17:00 748JSP 最佳实践: taglib简介 ... -
MyEclipse has detected that less than 5% of the 31MB of Eden Space (Heap memory)
2014-04-27 12:48 1079解决办法: D:\>cd D:\Users\Admin ... -
接着报错,连接问题Cannot open a connection
2014-03-28 18:39 1399HTTP Status 500 - ------- ... -
让spring启动时应用不需要加载数据库【default-lazy-init="true"】
2014-03-28 14:33 5354spring启动时应用不需要加载数据库,需要时在加载,如何实现 ... -
异常的Tomcat输出信息-修正log4j配置文件之后仍然异常
2014-03-28 11:51 10832014-3-28 11:46:50 org.apache ... -
异常的Tomcat输出信息
2014-03-28 11:27 693正常情况下是没有换行的。现在异常的情况是有换行的。 20 ... -
正常的Tomcat输出信息
2014-03-28 11:26 10002014-3-28 11:23:07 org.apache ... -
烦人的后台首页index.jsp弄好了
2014-03-25 14:39 45991.<title>微信公众平台后台管理< ... -
MAVEN官网地址
2014-03-25 10:12 716http://mvnrepository.com/artifa ... -
正则表达式
2014-03-25 10:11 549[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
Window 通过cmd查看端口占用、相应进程、杀死进程等的命令
2014-03-24 16:03 1059Window 通过cmd查看端口占用、相应进程、杀死进程等的命 ... -
java synchronized详解
2014-03-16 11:30 469Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候 ...
相关推荐
在数据库设计中,一对一关系意味着两个实体表之间存在唯一映射。在Hibernate中,可以通过@OneToOne注解来实现这种关系。例如: ```java @Entity public class User { @Id private Long id; @OneToOne(mappedBy...
在Hibernate的XML配置文件中,你需要为这两个实体定义对应的映射。每个实体需要一个`<class>`标签,其中包含实体的类名和表名。在`<class>`标签内,你可以定义属性的映射,如主键、属性到列的映射等。 **保存和查询...
描述中提到的"博文链接:https://fqh1987.iteye.com/blog/791845"可能指向一篇详细讲解这两个概念的文章,但由于信息有限,我们无法直接查看具体内容,所以我们将基于普遍知识进行解释。 **知识详解** 1. **...
《Hibernate注解处理映射关系》是一份深入探讨Hibernate框架中注解应用的教程,共有14页内容,旨在帮助开发者更好地理解和运用Hibernate在数据库映射中的注解技术。Hibernate作为Java领域广泛使用的对象关系映射...
双向关联需要维护好两个方向的引用,以保持数据一致性。 6. **单向关联**:与双向关联相比,单向关联只在父实体上使用@OneToMany注解,而子实体没有相应的引用。这种关联更简单,但查询和更新操作可能需要额外的SQL...
本文将深入探讨Hibernate中的两个关键概念——注解声明的一对多(@OneToMany)和多对一(@ManyToOne)关系,以及如何在实际项目中应用它们。 一、Hibernate注解介绍 Hibernate通过注解简化了Java类与数据库表之间的...
在数据库设计中,`ManyToMany`关系表示两个实体之间存在多对多的关系。例如,学生可以选修多门课程,而课程也可以被多个学生选修。在JPA中,我们可以使用`@ManyToMany`注解来定义这种关系。这个注解通常需要配合`@...
《hibernate数据库映射例子.zip》这个压缩包包含了几个基于Hibernate框架的数据库映射示例,旨在帮助初学者理解并掌握如何在实际项目中应用Hibernate进行数据持久化操作。Hibernate是一个强大的Java对象关系映射...
一对一映射表示两个实体类之间存在唯一的关系,就像一个人只能有一个身份证。在 Hibernate 中,这可以通过在两个实体类中添加 `@OneToOne` 注解实现。此外,还可以使用 `@PrimaryKeyJoinColumn` 或 `@JoinColumn` ...
在Java Persistence API (JPA) 中,实体映射关系是数据库关系模型与Java对象模型之间的桥梁,用于在ORM(对象关系映射)框架下管理数据。JPA 提供了多种映射关系,使得开发者能够方便地处理不同类型的关联。下面我们...
通过在实体类上使用@Entity注解,并使用@Id注解指定主键字段,可以将一个Java类映射到数据库的一张表。字段则通过@Column注解来指定列名和属性,如长度、是否可为空等。 在处理NULL值时,Hibernate提供了可选的...
1. **定义实体类**:首先,我们需要创建两个实体类,例如`Parent`和`Child`。在`Parent`类中,`Child`是一个集合,而在`Child`类中,`Parent`是一个单个对象。 2. **在父类中添加@OneToMany注解**:在`Parent`类的`...
8. **懒加载和急加载**:Hibernate提供了两种加载策略,懒加载(Lazy Loading)只在真正需要关联对象时才去数据库获取,而急加载(Eager Loading)则会在加载主对象时一起加载关联对象。通常使用`@OneToMany(fetch =...
3. **关联映射**:集合映射通常涉及到两个实体之间的关联,如一对一(@OneToOne)、一对多(@OneToMany)、多对一(@ManyToOne)和多对多(@ManyToMany)关系。 4. **集合属性映射**:在实体类中,集合属性需要使用...
对于"student与Score的Map集合关系",在Hibernate配置文件中,我们需要定义两个实体(Student和Score),并在Student实体中声明一个Map类型属性,用于存储Score对象。映射关系可以通过`@OneToMany`和`@ManyToOne`...
在Java的持久化框架中,Hibernate是一个非常流行的ORM(对象关系映射)工具,它允许开发者用面向对象的方式来处理数据库操作。本实例主要探讨了Hibernate中的三种基本映射关系:一对一、一对多以及多对多,并且是...
在数据库中,多对多关系表示两个表中的记录都可以相互关联。在Hibernate中,这通常通过中间表(或关联表)来实现,使用`@ManyToMany`注解。例如,一个学生可以选修多门课程,一门课程也可以被多个学生选修: ```...
**双向映射**则意味着两个实体都知晓彼此的关系。在用户和订单的例子中,如果用户也需要查看其所有的订单,那么就需要在User类中也添加一个Order的集合属性。这通常会使用@OneToMany和@ManyToOne的组合,以及@...
关联表是指在数据库设计中,两个或多个表之间存在的一种联系。在ORMLite中,我们可以利用`@OneToOne`、`@OneToMany`、`@ManyToOne`和`@ManyToMany`注解来处理这些关联。这些注解分别表示一对一、一对多、多对一和多...
首先,我们需要在两个实体类中定义对应的属性和getter、setter方法。假设我们有User类(父实体)和Order类(子实体): ```java // User.java public class User { private Long id; private String username; /...