`
tanglei198577
  • 浏览: 59683 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

unique foreign key mapping of hibernate example

    博客分类:
  • SSH
阅读更多

First the ddl language of the table used with foreign key as :

CREATE TABLE `t_operation_log` (
  `id` BIGINT(24) NOT NULL AUTO_INCREMENT,
  `resourceId` BIGINT(24) NOT NULL,
  `systemlogId` BIGINT(24) NOT NULL,
  `operationTime` DATE DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `resourceId` (`resourceId`),
  KEY `systemlogId` (`systemlogId`),
  CONSTRAINT `t_operation_log_fk1` FOREIGN KEY (`systemlogId`) REFERENCES `t_system_log` (`id`),
  CONSTRAINT `t_operation_log_fk` FOREIGN KEY (`resourceId`) REFERENCES `t_resource` (`id`)
)ENGINE=InnoDB
AUTO_INCREMENT=4 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' 

then the xml of the mapping is:

<?xml version="1.0" encoding="UTF-8"?>
<!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.alba.permission.domain.Resource" table="t_resource" dynamic-insert="true" dynamic-update="true">
    	<id name="id" column="id" type="java.lang.Long">
        	<generator class="increment"/>
        </id>
		<property name="url" type="string" not-null="true" />
		<property name="resourceType" type="string" not-null="true" />

	</class>
	
	<class name="com.alba.permission.domain.OperationLog" table="t_operation_log" dynamic-insert="true" dynamic-update="true">
    	<id name="id" column="id" type="java.lang.Long">
        	<generator class="increment"/>
        </id>
        <property name="operationTime" type="java.util.Date" />      
        <many-to-one name="resource" class="com.alba.permission.domain.Resource" column="RESOURCEID" unique="true" />
        <many-to-one name="systemLog" class="com.alba.permission.domain.SystemLog" column="SYSTEMLOGID" unique="true"/>
	</class>
	
	<class name="com.alba.permission.domain.SystemLog" table="t_system_log" dynamic-insert="true" dynamic-update="true">
    	<id name="id" column="id" type="java.lang.Long">
        	<generator class="increment"/>
        </id>
		<property name="logonUserIp" type="string" not-null="true" />
		<property name="logonTime" type="java.util.Date" not-null="false" />
		<property name="logoffTime" type="java.util.Date" not-null="false" />
		<property name="logonUserId" type="java.lang.Long" not-null="true"/>
	</class>
</hibernate-mapping>

 

then test code are:

         Resource resource = new Resource();
        OperationLog operationLog = new OperationLog();
        SystemLog systemLog = new SystemLog();
		
        resource.setUrl(operationUrl);
        resource.setResourceType("Button");
        facade.getPermissionService().addOperationLog(resource);
        systemLog.setLogonUserIp(currentHostIp);
        systemLog.setLogonUserId(user.getId());
        facade.getPermissionService().addOperationLog(systemLog);
        operationLog.setOperationTime(new Date());
        operationLog.setResource(resource);
        operationLog.setSystemLog(systemLog);
        
        facade.getPermissionService().addOperationLog(operationLog);

 The problem may happend:

      1.if before add operationLog ,systemLog and resource log doesnot add,the exception will be thrown

      2.here should use many to one,not one to one mapping,remembering

     

0
1
分享到:
评论

相关推荐

    hibernate-mapping参数详解

    在深入探讨`hibernate-mapping`参数之前,我们先理解一下Hibernate的核心概念。Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。`hibernate-mapping`是Hibernate配置...

    hibernate-mapping

    《Hibernate Mapping:深入理解与应用》 Hibernate Mapping是Java领域中一种重要的对象关系映射(ORM)技术,它使得开发者可以使用面向对象的方式来操作数据库,极大地简化了数据存取的操作。在Hibernate中,...

    Hibernate 离线的配置方法(hibernate-mapping-3.0.dtd)

    因为Hibernate在读出hbm.xml文件时需要通过网络读取到hibernate-mapping-3.0.dtd 文件。 如果没有网络不能正常工作。 所以提供上述文件。 以及hibernate-mapping-3.0.dtd,hibernate-configuration-3.0.dtd提供下载...

    hibernate-mapping-3.0.dtd

    hibernate-mapping-3.0.dtd 配置后,就会在xml中进行提示

    hibernate-configuration-3.0.dtd、hibernate-mapping-3.0.dtd

    《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...

    Real-Time Accurate Mapping of Large Environments

    In this paper, we present a hierarchical mapping method that allows us to obtain accurate metric maps of large en- vironments in real time. The lower (or local) map level is composed of a set of local...

    hibernate mapping 文档

    详细的hibernate映射文件讲解 , 包含主键映射 , 属性映射 , 容器映射等 ,让你更轻松的使用hibernate

    hibernate 无主键表映射

    在Java的持久化框架Hibernate中,无主键表映射是一种特殊情况,主要处理那些在数据库中没有明确单一主键的表。这种情况通常出现在那些通过多个字段共同唯一标识一条记录的复合主键(Composite Key)场景。本文将详细...

    MAPPING Hibernate方法小结.doc

    【MAPPING Hibernate方法小结】 Hibernate 是一个流行的Java ORM(对象关系映射)框架,它允许开发者用面向对象的方式操作数据库。以下是对Hibernate中几种关键概念的详细解释: 1. **对象之间的关系**: - **...

    Hibernate完整使用教程

    hibernate-mapping 是 Hibernate 的映射文件,用于定义对象到关系数据库的映射关系。hibernate-mapping 文件中定义了对象模型、关系模型、映射关系等信息。 class class 是 Hibernate 中的一个重要概念,用于定义...

    hibernate如何用O/R Mapping框架来实现我们的数据层

    ### Hibernate与O/R Mapping框架详解 #### 一、O/R Mapping概述 O/R Mapping(Object-Relational Mapping)即对象关系映射,是一种程序技术,用于将对象模型表示的应用程序对象与关系数据库中的表进行相互转换。在...

    hibernate_reference.pdf

    You'll set up the `hibernate.cfg.xml` file, which contains essential configuration settings for Hibernate, including database connection details and the location of mapping files. - **Building with ...

    hibernate的dtd 包含hibernate.properties

    在这个主题中,我们主要关注的是Hibernate的配置文件`hibernate.properties`以及它的DTD(Document Type Definition)文件,包括`hibernate-configuration-3.0.dtd`和`hibernate-mapping-3.0.dtd`。 首先,`...

    Sensor Mapping Example.vi

    利用labview sensor mapping控件进行三维模型展示,利用该控件能够组合、拼接、拆分用cad或者SolidWorks构建的三维模型并在labview里面进行三维展示

    Hibernate一对一唯一外键关联映射(单向关联)

    一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一的关系。 ### 2. 唯一外键...

Global site tag (gtag.js) - Google Analytics