`

hibernate orm配置一对多时,多方加一字段记录顺序

阅读更多

代码:

一方:

import java.util.List;

public class Father {
	private Long id;
	List<Son> sons;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public List<Son> getSons() {
		return sons;
	}
	public void setSons(List<Son> sons) {
		this.sons = sons;
	}
	
}

 多方:

public class Son {
	private Long id;
	private String sort;
	private Father father;
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getSort() {
		return sort;
	}
	public void setSort(String sort) {
		this.sort = sort;
	}
	public Father getFather() {
		return father;
	}
	public void setFather(Father father) {
		this.father = father;
	}
	
}

 配置文件:

一方:

不能同时配置 <order-by >和<order-column> 会报如下错误,

Invalid content was found starting with element 分开配置:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
	version="2.0">
	<package>...model...</package>
	<access>PROPERTY</access>
	<entity class="Father" name="Father">
		<table name="tb_father" />
		<sequence-generator name="SEQ_tb_father_ID" sequence-name="SEQ_tb_father_ID" allocation-size="1"/>
		<attributes>
			<id name="id">
				<column name="ID" unique="true" nullable="false"
					precision="11" scale="0" />
				<generated-value strategy="SEQUENCE" generator="SEQ_tb_father_ID" />
			</id>
			<!--1.对应关系跟下面2一样   :查询子list时会加一个order by sort_order ASC的条件-->
			<one-to-many name="sons" fetch="LAZY" mapped-by="father">
			<order-by >sort_order ASC</order-by>
				<cascade><cascade-all/></cascade>
			</one-to-many>
			<!--2.对应关系跟上面1一样,分开写两次为了避开上面红字的报错。  插入或更新时会记录顺序,通过在tb_son的sort_order中从0递增记录-->
			<one-to-many name="sons" fetch="LAZY" mapped-by="resource">
			<order-column name="sort_order" insertable="true" updatable="true"/>
			</one-to-many>
		</attributes>
	</entity>
</entity-mappings>

 多方:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
	version="2.0">
	<package>...model...</package>
	<access>PROPERTY</access>
	<entity class="Son" name="Son">
		<table name="tb_son" />
		<sequence-generator name="SEQ_tb_son_ID" sequence-name="SEQ_tb_son_ID" allocation-size="1"/>
		<attributes>
			<id name="id">
				<column name="ID" unique="true" nullable="false"
					precision="11" scale="0" />
				<generated-value strategy="SEQUENCE" generator="SEQ_tb_son_ID" />
			</id>
			<basic name="sort">
				<column name="sort_order" length="64" nullable="true" />
			</basic>
			<many-to-one name="father" fetch="LAZY">
				<join-column name="father_ID" insertable="true" updatable="true" />
				<cascade><cascade-persist/><cascade-merge/><cascade-refresh/></cascade>
			</many-to-one>
		</attributes>
	</entity>
</entity-mappings>

 

表结构如下:

|  tb_father       |   tb_son

|  id                   |   id

|                       |   sort_order

|                       |   father_ID

 

father里有两个son1、son2,save(father)时:
tb_father 表数据:

id    

1

tb_son  表数据:

id          sort_order          father_id

1             0                              1

2             1                              1

 

 

分享到:
评论

相关推荐

    Hibernate ORM - 一对多双向关联关系

    这个压缩包文件“HibernateORM”很可能包含了关于如何在实际项目中设置和使用Hibernate一对多双向关联的示例代码、配置文件或者详细教程。通过学习这些材料,开发者能够深入理解如何在Java应用中利用Hibernate来处理...

    Hibernate ORM - 一对一连接表关联关系

    标题"Hibernate ORM - 一对一连接表关联关系" 提示我们,这里主要讨论的是Hibernate ORM框架在处理数据库中一对一(One-to-One)关联映射的方法。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者用...

    Hibernate ORM - 一对多双向连接表关联关系

    “Hibernate ORM - 一对多双向连接表关联关系”这个标题指出我们要讨论的是Hibernate ORM框架中的一种特定数据库关联模型,即一对多的双向关联。在Hibernate中,ORM(对象关系映射)是一种技术,它允许我们用面向...

    Hibernate ORM - 一对多双向组合关联关系

    **标题解析:** "Hibernate ORM - 一对多双向组合关联关系" 这个标题表明我们要讨论的是Hibernate ORM框架中的一种特定的数据关系映射——一对多双向组合关联。在关系型数据库中,一对多关联意味着一个父实体可以与...

    hibernate-orm-master.zip

    Hibernate ORM(Object-Relational Mapping)是Java领域中最受欢迎的持久化框架之一,它提供了一种便捷的方式将Java对象映射到关系数据库,从而实现了对象-关系的解耦。"hibernate-orm-master.zip"文件包含了...

    Hibernate ORM - 一对一外键关联关系

    综上所述,"Hibernate ORM - 一对一外键关联关系"是一个关于如何在Hibernate中设置和管理一对一关系的专题,涉及源码配置、工具使用和性能优化等多个方面。通过阅读相关的博客文章和实践压缩包中的示例,开发者可以...

    HibernateORM

    Hibernate通过XML配置文件或注解方式定义对象与数据库表之间的映射关系,实现了Java对象和数据库记录的自动转换。 在第二章中,可能涉及的内容包括: 1. Hibernate的安装与配置:这部分会介绍如何在项目中添加...

    hibernate-orm-3.2.zip

    Hibernate支持一对一、一对多、多对一、多对多等多种关联映射。例如,使用`@OneToOne`、`@ManyToOne`、`@OneToMany`和`@ManyToMany`注解来定义这些关系,并可通过`CascadeType`设置级联操作。 八、延迟加载(Lazy ...

    hibernate-orm-4.3.9源码

    总结,hibernate-orm-4.3.9源码揭示了Hibernate的内部实现细节,包括对象-关系映射、缓存管理、事务处理、查询优化等多个方面。通过研究源码,开发者不仅可以理解其工作原理,还能提升在实际项目中的使用技巧,从而...

    hibernateORM1-n映射

    在"hibernateORM1-n映射"这个主题中,我们将深入探讨Hibernate中的一对多(1:N)映射关系。 在关系数据库中,一对多关系是指一个表中的记录可以对应另一个表中的多个记录。在Hibernate中,这种关系可以通过配置XML...

    Hibernate orm 实现原理

    Hibernate orm 实现原理 主要讲解了关于hibernate 的一些知识

    hibernate-orm-3.3源码

    3.3 版本在前代基础上进行了多方面的改进,包括性能优化、新的查询语言 HQL(Hibernate Query Language)以及对 JPA(Java Persistence API)的支持等。 二、核心组件 1. SessionFactory:它是 Hibernate 的核心,...

    ORM hibernate。jar包

    字段映射使用@Column,主键用@Id,一对多、多对一、一对一等关系映射使用@OneToOne、@OneToMany、@ManyToOne等注解。 3. **Session与Transaction**:Session是操作数据库的对象,负责持久化对象,它支持CRUD...

    Hibernate_ORM步骤详解

    Hibernate ORM 是一种强大的Java持久层框架,它实现了对象关系映射(ORM)的概念,使得开发者可以使用面向对象的方式来操作数据库,而无需关心底层SQL语句的编写。在本教程中,我们将详细介绍如何利用Hibernate 3...

    Hibernate框架ORM的实现原理

    综上所述,Hibernate框架通过一系列精心设计的配置文件和API实现了强大的ORM功能。通过对XML文件、Properties文件以及Java类文件的解析,Hibernate能够在运行时建立起Java对象与数据库表之间的映射关系。此外,...

    Hibernate ORM 5.3.7.Final User Guide

    Hibernate ORM是一款为Java环境提供的对象/关系映射(Object/Relational Mapping, ORM)解决方案。它主要解决的问题是将对象模型表示的数据映射到关系数据库模型表示的数据,以及将Java数据类型映射到SQL数据类型。...

    hibernate-orm-master

    hibernate-orm-master

    Hibernate ORM 新特性之 Service(Registry).

    在探讨Hibernate ORM的新特性——Service Registry之前,我们首先要理解Hibernate ORM的基本概念。Hibernate是一个流行的开源对象关系...开发者在升级到新版本时,应适应这一变化,以便更好地利用Hibernate ORM的功能。

Global site tag (gtag.js) - Google Analytics