EF复合主键】的更多相关文章

[Key,Column(Order = )] [Key,Column(Order = )]…
主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射  Hibernate封装了数据库DDL语句,只需要将数据表和类之间实现映射,即可对数据表进行操作. 示例:数据库中存在表interface_admin.ds_area,实现表和类之间映射,其中单一主键oggKeyId,使用主键自动生成策略UUID,具体第二点进行阐述 . package com.pec.model; import java.io.Seri…
需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接口),且在Hibernate.cfg.xml文件中,复合主键用到的类的映射的xml文件需要放在改类映射的xml文件之前. package com.cdms.model; import java.io.Serializable; /** * 角色权限类 * @author MY * */ public…
有时一个实体的主键可能同时为多个,例如同样是之前使用的“CustomerEO”实体,需要通过name和email来查找指定实体,当且仅当name和email的值完全相同时,才认为是相同的实体对象.要配置这样的复合主键,步骤如以下所示. (1)编写一个复合主键的类CustomerPK,代码如下. CustomerPK.java import java.io.Serializable; public class CustomerPK implements Serializable {        …
把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对象模型的配置上面,差别就比较大了:在对象模型中,复合主键需要一个独立的类,以下面把年和月作为复合主键为例: 复合主键类 import java.io.Serializable; public class FiscalYearPeriodPK implements Serializable { //核…
目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张表需要多个字段列才能唯一确定一行记录,这时表需要使用复合主键.面对这样的情况Hibernate为我们提供了两种方式来解决复合主键问题. 方式一:将复合主键对应的属性与实体其他普通属性放在一起 例如实体类People中"id"和"name"属性对应复合主键: /*实体类,…
转载自:http://blog.csdn.net/sunrise918/article/details/5575054 这几天对逻辑主键.业务主键和复合主键进行了一些思考,也在网上搜索了一下相关的讨论,相关讨论可以看最下面的参考链接.下面是自己基于 SQL Server 做的一些总结,其他数据库(Oracle.MySQL.DB2.......)应该也类似吧.这个只是自己一时的思考,如有不当请告知,重新思考后再修 正. 定义(部分定义来源于 SQL Server 联机丛书): 主键(PRIMARY…
一:复合主键 复合主键即两个或多个字段联合起来作为主键,它的通常做法是将主键相关字段抽取出来放到一个单独的类中,但是这样的类是有要求的: 1.      必须实现序列化接口 2.      必须覆盖equals和hashCode方法 以会计核算期中核算年和核算月做主键为例,将这两个主键相关字段放到FiscalYearPeriodPK类中,代码如下: package com.bjpowernode.hibernate; import java.io.Serializable; public cla…
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入discriminator-value鉴别器.该篇文章来讨论复合主键映射,它是指主键是多列的组合,如今在设计数据库时非常少用到复合主键,由于考虑到数据库的优化,经常会把复合主键拆分到两个表中,并利用一个关系表来维护两个表的关系,关系表中不加入主键. 一.复合主键映射 复合主键映射须要在映射配置文件里使用<…
什么是数据表的复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成 比如 create table test (    name varchar(19),    id number,    value varchar(10),    primary key (name,id) ) 上面的name和id字段组合起来就是你test表的复合主键 它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 一般情况下,主键的字段长度和字段数目要越少越好 KE…
前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文件 主配置文件主要配置: 数据库的信息 其他参数 加载映射文件 常用的配置信息都可以在hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties目录下可以找到.. 数据库信息 常用的配置信息都可以在hibernate.pro…
https://blog.csdn.net/wyc_cs/article/details/9031991 创建一个复合主键类 public class LevelPostMultiKeysClass implements Serializable{ private Integer levelId; private Integer postId; public LevelPostMultiKeysClass() { } public LevelPostMultiKeysClass(Integer…
Hibernate.cfg.xml主配置文件 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties(键值对的形式展现) 如: ..... ## Microsoft Driver (not recommended!) #hibernate.connection.driver_class com.microsoft.jdbc.sqlserv…
上一篇博客简单介绍了SpringData JPA实现简单的CRUD,分页与多条件的排序,那里的主键类型是Long,有时我们会遇到主键不是一个的,复合主键,经过调研如下.确定一个人,不能只根据他的姓名来确定,因为会有重名,现在我们假设姓名.身份证号确定唯一一个人. 复合主键:一张表存在多个字段共同组成一个主键,这多个字段的组合不能重复,但是单独一个可以重复. 例子:姓名和省份证号共同组成了主键 一.Spring Data Jpa 复合主键 1.1.编写一个复合主键类:PeopleKey @Embe…
使用Code First模式实现给实体类添加复合主键,代码如下: using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using System.Web; namespace MyFirstMvcApp.Models { //…
[转自] http://blog.csdn.net/happylee6688/article/details/17636801 最近做项目用到了Hibernate框架,采用了纯面向对象的思想,使用ORM映射实体.在开发中,实体中出现了复合主键,不再是单一的属性作主键,由于采用了注解的方式,就不再使用xml文件进行配置了,而是直接在实体中进行注释. Hibernate注解规范的文档中提供了三种方法: 1. 将组件类注解为@Embeddable,并将组件的属性注解为@Id: 2. 将组件的属性注解为…
对实体类的的多个字段建立唯一索引,达到复合主键的效果 package com.sxd.swapping.domain; import lombok.Getter; import lombok.Setter; import javax.persistence.*; /** * 多个字段 key2 和key3 建立唯一索引,需要 这两个字段都nullable = false,才能创建成功 * 也可以创建普通索引,例如user_name 或者password */ @Entity @Table(nam…
1>hibernate/JPA实现复合主键的思路:是将所有的主键属性封装在一个主键类中,提供给需要复合主键的实体类使用. 2>主键类的几点要求: . 使用复合主键的实体类必须实现Serializable接口. 必须实现Serializable接口的原因很简单,我们查找数据的时候是根据主键查找的.打开Hibernate的帮助文档我们可以找到get与load方法的声明形式如下: Object load(Class theClass,Serializable id) Object get(Class…
timeuuid类型 timeuuid具有唯一索引和日期时间的综合特性,可以与日期和时间函数联合使用,常用的关联函数: dateOf() now() minTimeuuid() and maxTimeuuid() toDate(timeuuid) toTimestamp(timeuuid) toUnixTimestamp(timeuuid) 比如 SELECT * FROM myTable WHERE t > maxTimeuuid('2013-01-01 00:05+0000') AND t…
一.什么是复合主键? 一张表的主键是由多个字段组成,这个主键就被称为复合主键.  主键是唯一确定某条记录的字段,比如公民的身份证号就是一个主键,因为由身份证号这个主键就可以确定 某个公民.   有一种情况,比如学生成绩这张表中,一个学号无法唯一确定这个学生的成绩,因为这个学生有多科成绩,这时候“学号+学科”才是主键,两者结合才能唯一确定一条记录,也就是成绩. 二.hibernate生成含有复合主键表的映射bean 2.1 创建有复合主键的表   这张表有复合主键 2.2 生成映射文件   Hib…
如果是想两个字段组成一个复合主键的话可以如下.SQL code sqlite> create table t2 ( ...> id1 int , ...> id2 int, ...> col varchar(20), ...> constraint pk_t2 primary key (id1,id2) ...> ); sqlite>   如果是双主键如下: sqlite> create table t1 ( ...>         id      …
问题的起因,假设有一张表,里面保存了交易订单,每张订单有唯一的ID,有最后更新时间,还有数据,详情如下: 1 2 3 4 5 6 7 +-------+----------+------+-----+---------------------+-------+ | Field | Type     | Null | Key | Default             | Extra | +-------+----------+------+-----+---------------------+…
<resultMap type="XX" id="XXMap">   <id property="id" column="colid"/> <id property="name" column="colname"/> <collection property="list" javaType="ArrayList&qu…
转: https://blog.csdn.net/shutingwang/article/details/6627730 https://blog.csdn.net/lmy86263/article/details/52108130 @embeddable是注释Java类的,表示类是嵌入类.@embedded是注释属性的,表示该属性的类是嵌入类.…
<resultMap type="XX" id="XXMap">          <id property="id" column="colid"/> <id property="name" column="colname"/> <collection property="list" javaType="Array…
这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码: public class Blog { public Blog() { Post1s = new List<Post1>(); Post2s = new List<Post2>(); } public int Id { get; set; } public string Title { get; set; } public string Url { get;…
django中不支持双主键.多主键. 要实现类似功能可以: classMeta: unique_together=(("driver","restaurant"),) 里边两个元素联合去重的. 既是复合主键 注意使用这种方法不要设置主键,让django自己生成一个id作为主键即可. 参考:http://docs.djangoproject.com/en/dev/ref/models/options/#unique-together…
原文地址:https://docs.efproject.net/en/latest/modeling/keys.html Keys (primary) Key 是每个实体例的主要唯一标识.EF Core中的 Key 映射到关系型数据库中就相当于主键.我们也可以配置一个不是主键的唯一标识给一个实体.(点这里 Alternate Keys 查看更多信息) 内容导航 约定 Data Annotation Fluent API 约定 依照约定,一个名称为 Id 或者 <type name>Id 的属性…
在JDBC3.0规范中,当新增记录时,允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中.使用Statement时,可以通过以下方法绑定主键值: int executeUpdate(String sql,int autoGeneratedKeys) 也可以通过Connection创建绑定自增值的PreparedStatement: PreparedStatement prepareStatement(String sql,int autoGenerated…
*主键 主键就是数据行的唯一标识.不会重复的列才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键. *主键特点:1不能重复的列.2主键不能为null. *同名时如何处理:王洋(大) 王洋(小) *主键有两种选用策略: 业务主键和逻辑主键. 业务主键是使用有业务意义的字段做主键,比如身份证号.银行账号等: 逻辑主键是使用没有任何业务意义的字段做主键,完全给程序看的,业务人员不会看的数据.因为很难保证业务主键不会重复(身份证号重复).不会变化(帐号升位),因此推荐用逻…