`
woshixushigang
  • 浏览: 578499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

hibernate4 注解配置失误导致生成的表关联关系不对

 
阅读更多

最近做ibm 风险管理系统,配置hibernate 注解时候看了几遍都是正确的,但是生成的表总是无关联关系,即便是有关联的也不对。testng时候也不报错。。。

错误原因不说了,直接上代码。

package com.ibm.banking.irmp.dataimport;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.NamedQueries;
import org.hibernate.annotations.NamedQuery;

import com.ibm.banking.framework.dto.BaseVO;

@Entity
@Table(name = "RI_NT_REGULAR_DEF")
@NamedQueries({ @NamedQuery(name = "RegularTable.getAll", query = "select regularData from RegularData regularData  order by regularData.id", readOnly = true, cacheable = true, cacheRegion = "RefBean") })
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "RefBean")
public class RegularData implements BaseVO, Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 5395568085328896385L;
	/**
	 * @author xushigang
	 */
	private Long id;
	private String tableName;
	private List<RegularColMapping> mapping;

	public RegularData() {
	}

	public RegularData(Long tableId) {
		super();
		this.id = tableId;
	}

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}

	public void setId(Long tableId) {
		this.id = tableId;
	}

	public String getTableName() {
		return tableName;
	}

	public void setTableName(String tableName) {
		this.tableName = tableName;
	}


	@OneToMany(cascade = CascadeType.ALL, mappedBy="regularData")
	public List<RegularColMapping> getMapping() {
		return mapping;
	}

	public void setMapping(List<RegularColMapping> mapping) {
		this.mapping = mapping;
	}
}

 

package com.ibm.banking.irmp.dataimport;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.ibm.banking.framework.dto.BaseVO;

@Entity
@Table(name = "RI_NT_REGULAR_COL")
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY, region = "RefBean")
public class RegularColMapping implements BaseVO, Serializable {
	/**
	 * @author xushigang
	 */
	private static final long serialVersionUID = 1L;
	private Long id;
	private String regularName;
	private String description;
	private String regularType;
	private String columnName;
	private String sql;
	private String tag;
	private RegularData regularData;
	
	public RegularColMapping() {}
	public RegularColMapping(String columnName) {
		super();
		this.columnName = columnName;
	}
	@Id @GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long regularId) {
		this.id = regularId;
	}
	public String getRegularName() {
		return regularName;
	}
	public void setRegularName(String regularName) {
		this.regularName = regularName;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getRegularType() {
		return regularType;
	}
	public void setRegularType(String regularType) {
		this.regularType = regularType;
	}
	public String getColumnName() {
		return columnName;
	}
	public void setColumnName(String columnName) {
		this.columnName = columnName;
	}
	public String getSql() {
		return sql;
	}
	public void setSql(String sql) {
		this.sql = sql;
	}
	public String getTag() {
		return tag;
	}
	public void setTag(String tag) {
		this.tag = tag;
	}
	
	@ManyToOne
	@JoinColumn(name="TABLE_ID")
	public RegularData getRegularData() {
		return regularData;
	}
	public void setRegularData(RegularData regularData) {
		this.regularData = regularData;
	}
	
}

 

以上是正确的配置,我原始的配置是 将@Id 放在了

private Long id;

上面,但这也不是主要原因,我实现的baseVo里面有序列id,我没有加 @transient,但是也没报错,很是怪异。

 

 

 

分享到:
评论

相关推荐

    Hibernate4.0注解配置详解.docx

    Hibernate4.0注解配置详解,Hibernate4.0注解配置详解,Hibernate4.0注解配置详解

    注解配置 javabean hibernate 关联关系

    在Hibernate框架中,注解配置被广泛用于简化对象关系映射(ORM)的配置,使得Java Bean可以直接与数据库表进行关联。本篇文章将深入探讨如何使用注解配置Java Bean并建立Hibernate的关联关系。 首先,我们需要理解...

    基于注解的关联关系Hibernate

    在这个“基于注解的关联关系Hibernate”的主题中,我们将深入探讨如何使用Hibernate的注解来配置不同类型的关联关系,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-...

    hibernate@注解方式配置实体类,调用javadoc接口生成数据库表及字段的注释说明

    hibernate@注解方式配置实体类时,利用javadoc接口生成数据库表及字段的注释说明,支持oracle、sqlserver、db2、mysql数据库。因用到java\lib\tools.jar,需要将该jar放入工程lib下(或者tomcat\lib下、或加入...

    hibernate注解配置

    4. **@Column**:这个注解用于定义实体类中属性与数据库表中列之间的映射关系。通过该注解可以指定列的名称、是否允许空值、是否唯一等属性。 - `name`:可选,指定列名,默认情况下采用属性名。 - `unique`:可选...

    Hibernate注解 关联关系映射注解.docx

    多对多的关联关系可以使用`@ManyToMany`注解,Hibernate会自动创建一个中间表来存储两个实体类之间的关联。如果需要自定义中间表的名称或字段,可以使用`@JoinTable`注解。在双向多对多关联中,依然需要`mappedBy`来...

    spring-hibernate注解配置源码

    在注解配置下,我们不再需要`hibernate.cfg.xml`配置文件,而是使用`@Entity`注解标识实体类,`@Table`定义对应的数据库表,`@Id`标识主键,`@GeneratedValue`处理自增主键等。此外,`@ManyToOne`、`@OneToOne`、`@...

    Hibernate注解配置表映射实例

    在这个“Hibernate注解配置表映射实例”中,我们将深入探讨如何使用Hibernate的注解来配置实体类与数据库表之间的映射。 Hibernate注解提供了在Java类和类属性上直接定义数据库映射的能力,避免了XML配置文件的繁琐...

    hibernate各种常用关联关系的基本配置

    本篇文章将深入探讨Hibernate中常见的几种关联关系及其基本配置。 一、一对一(OneToOne)关联 在一对一关联中,一个实体对象只对应数据库中的一个记录。配置方式通常通过`@OneToOne`注解实现,可以设置`mappedBy`...

    hibernate 关系注解

    当一对一关系通过中间关联表实现时,使用`@JoinTable`注解。例如: ```java @OneToOne(cascade = CascadeType.ALL) @JoinTable( name="basicdetail", joinColumns=@JoinColumn(name="class1id"), ...

    hibernate 4 注解详解

    同时,Hibernate 4 还提供了其他丰富的注解,如 @Id 用于定义主键,@GeneratedValue 用于自动生成主键值,@ManyToOne 和 @OneToMany 等用于处理对象之间的关联关系。理解并熟练使用这些注解,对于掌握 Hibernate 4 ...

    Hibernate双向一对一关联映射(注解版)

    综上所述,Hibernate双向一对一关联映射是通过注解实现的数据库表之间的关系映射,它提高了代码的可读性和可维护性。正确理解和运用这一技术,对于构建高效、灵活的Java应用程序至关重要。在实际开发中,要结合具体...

    Hibernate 关联关系解除

    理解Hibernate如何处理关联关系解除,需要查看其内部的持久化机制,特别是CascadeType和 AssociationOverride注解的实现。源码分析可以帮助我们更深入地了解Hibernate如何处理关联实体的删除操作,以及如何通过编程...

    Struts2 Spring3.0 Hibernate3.3 整合全注解配置用的数据库

    通过注解,我们可以在实体类上使用`@Entity`声明为数据库表,`@Table`指定表名,`@Id`定义主键,`@GeneratedValue`自动生成主键值。此外,`@ManyToOne`、`@OneToOne`、`@OneToMany`、`@ManyToMany`用于处理关系映射...

    Hibernate4实战之Hibernate4注解零配置

    在Java的ORM框架Hibernate4中,注解零配置是一种简化持久化对象(POJOs)映射的方法,它允许开发者避免使用XML配置文件,而是直接在Java类和属性上使用注解来描述数据库表和字段的映射关系。以下是关于Hibernate4...

    hibernate4全注解例子

    2. **注解配置**:在Hibernate4中,我们可以使用注解来替代XML配置文件,简化项目结构。常见的注解包括@Entity(定义实体类)、@Table(指定表名)、@Id(主键)、@GeneratedValue(生成策略)、@Column(字段映射)...

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

    描述部分虽然为空,但我们可以根据标题推测,这篇内容可能涉及了如何在Hibernate中配置和使用一对一关联,包括实体类的设计、注解的使用以及数据库表的结构设计等。 **知识点详解** 1. **Hibernate ORM框架**: ...

    Hibernate一对多关联映射(注解)

    总结一下,Hibernate的一对多关联映射通过注解方式定义了对象间的关联关系,使得我们在编程时能够以面向对象的方式操作数据,而底层数据库的操作则由Hibernate自动完成。这种方式大大提高了开发效率,同时也降低了...

    hibernate4注解详尽参考

    Hibernate 4是其中的一个重要版本,它支持了更多的注解(Annotations),这使得开发者能够在不使用XML映射文件的情况下完成ORM映射。 在Hibernate 4中,注解的使用变得更加广泛和灵活。新的注解参考文档会详细介绍...

Global site tag (gtag.js) - Google Analytics