笔者在使用hibernate注解时需要建一个表关联
通过本次建表收获了一些意外的心得
1、在使用@OneToOne注解时数据库相应表中不必有外键
2、注解必须写在一致的位置上,即要么全写在实体的字段上,要么全部写在get方法上
3、当要做冗余时;即在数据字段中要多建一个所参考的外键表的主键字段需要设置其中一个字段为不可写和不可更新
一般console报错误为:Repeated column in mapping for entity: net.shopxx.qzhprp.entity.GpPpDeployAccessories column: component_id (should be mapped with insert="false" update="false")
解决办法为:添加注解如, @JoinColumn(name = "componentId",referencedColumnName="SEQ_ID",insertable=false,updatable=false)
具体参考一下例子(example):
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
/**
*
* 中文名: 选购配件
* 表名: [shopxx3 (shopxx3)].[GP_PP_DEPLOY_ACCESSORIES]
* @author Zhang Xiaopeng
* @version 1.0
* @date 2013/10/21 21:01:01
*/
@Entity
@Table(name="GP_PP_DEPLOY_ACCESSORIES")
public class GpPpDeployAccessories {
// ------------------------------ FIELDS ------------------------------
/** seq_id(NUMBER(36)) */
private String seqId;
/** (NUMBER(36)) */
private String productId;
/** (VARCHAR2(100)) */
private String componentInformation;
/** (NUMBER(8,2)) */
private Double price;
/** (NUMBER(36)) */
private String accesoryId;
/** (char(36)) */
private String componentId;
/** (DATE) */
private Date createDate;
/** (DATE) */
private Date modifyDate;
/** 是否标配 */
private String isStandard;
/** 购物车键 */
private String cartKey;
/** 组件 */
private GpPpComponent gpPpComponent;
/** 配件 */
private GpPpAccessory GpPpAccessory;
// --------------------- GETTER / SETTER METHODS ---------------------
/**
* @return seq_id(NUMBER(36))
*/
@Id
@Column(name = "SEQ_ID", nullable = false)
public String getSeqId() {
return seqId;
}
/**
* @param seqId seq_id(NUMBER(36))
*/
public void setSeqId(String seqId) {
this.seqId = seqId;
}
/**
* @return (NUMBER(36))
*/
public String getProductId() {
return productId;
}
/**
* @param productId (NUMBER(36))
*/
public void setProductId(String productId) {
this.productId = productId;
}
/**
* @return (VARCHAR2(100))
*/
public String getComponentId() {
return componentId;
}
/**
* @param componentId (VARCHAR2(100))
*/
public void setComponentId(String componentId) {
this.componentId = componentId;
}
/**
* @return (VARCHAR2(100))
*/
public String getComponentInformation() {
return componentInformation;
}
/**
* @param componentInformation (VARCHAR2(100))
*/
public void setComponentInformation(String componentInformation) {
this.componentInformation = componentInformation;
}
/**
* @return (NUMBER(8,2))
*/
public Double getPrice() {
return price;
}
/**
* @param price (NUMBER(8,2))
*/
public void setPrice(Double price) {
this.price = price;
}
/**
* @return (NUMBER(36))
*/
public String getAccesoryId() {
return accesoryId;
}
/**
* @param accesoryId (NUMBER(36))
*/
public void setAccesoryId(String accesoryId) {
this.accesoryId = accesoryId;
}
/**
* @return (DATE)
*/
public Date getCreateDate() {
return createDate;
}
/**
* @param createDate (DATE)
*/
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public void setCreateDate(String createDate) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
this.createDate = df.parse(createDate);
} catch (Exception e) {
System.err.println(e.getMessage()+ e.getStackTrace());
}
}
public String getIsStandard() {
return isStandard;
}
public void setIsStandard(String isStandard) {
this.isStandard = isStandard;
}
public String getCartKey() {
return cartKey;
}
public void setCartKey(String cartKey) {
this.cartKey = cartKey;
}
/**
* @return (DATE)
*/
public Date getModifyDate() {
return modifyDate;
}
/**
* @param modifyDate (DATE)
*/
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
public void setModifyDate(String modifyDate) {
DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
this.modifyDate = df.parse(modifyDate);
} catch (Exception e) {
System.err.println(e.getMessage()+ e.getStackTrace());
}
}
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "componentId",referencedColumnName="SEQ_ID",insertable=false,updatable=false)
public GpPpComponent getGpPpComponent() {
return gpPpComponent;
}
public void setGpPpComponent(GpPpComponent gpPpComponent) {
this.gpPpComponent = gpPpComponent;
}
@OneToOne(cascade=CascadeType.ALL)
@JoinColumn(name = "accesoryId",referencedColumnName="SEQ_ID",insertable=false,updatable=false)
public GpPpAccessory getGpPpAccessory() {
return GpPpAccessory;
}
public void setGpPpAccessory(GpPpAccessory gpPpAccessory) {
GpPpAccessory = gpPpAccessory;
}
}
相关推荐
NULL 博文链接:https://zhouhaitao.iteye.com/blog/1171227
* 从表:@OneToOne(mappedBy = "主表类中的从表属性")//例主表User中有一个从表属性是Heart类型的heart,这里就填heart * public 主表类 get主表类(){return 主表对象} * @ManyToOne 设置多对一关联 * 方法一 * @...
NULL 博文链接:https://selvemen.iteye.com/blog/459102
使用@OneToOne注解建立实体Bean之间的一对一关联。一对一关联有三种情况:(1).关联的实体都共享同样的主键,(2).其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束),(3)...
Hibernate one to one 源码!有注释
在特定的实体关联属性上使用 @Embeddable 和 @AttributeOverride 注解可以覆盖该属性对应的嵌入式对象的列映射。 @Entity public class Person implements Serializable { // Persistent component using defaults...
详解Hibernate cascade级联属性的CascadeType的用法 cascade(级联) ...cascade表示级联操作,在hibernate配置注解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的属性。 例如: @ManyToOne(c
demo代码; 博客地址:http://blog.csdn.net/smilefyx/article/details/48951933
里面是hibernate 一对一的例子,里面有数据库,是用oracle连接的,把脚本生成一下就可以了.
hibernate对象三状态及OneToOne&OneToMany&ManyToMany讲解,代码示例,数据库示例!非常全面
hibernate_onetoone.part4.rar
hibernate_onetoone.part5.rar
第三部分hibernate_onetoone.part3共5部分 。全部下载需要10分
hibernate_onetoone.part2.rar <br>共5部分。 需要全部才能解压
概述 示例应用程序演示了如何将Hibernate用作Spring Data JPA的JPA提供程序... 使用外键列的两个实体类之间的@OneToOne关联 关于abstract类的JPA count查询 在abstract类上执行count查询 自定义JPA功能 扩展Spring D
NULL 博文链接:https://chen-rojer-gmail-com.iteye.com/blog/694722
hibernate one to one一对一关系示例,包括数据库备份文件。
o @OneToOne o @OrderBy • P o @PersistenceContext o @PersistenceContexts o @PersistenceProperty o @PersistenceUnit o @PersistenceUnits o @PrimaryKeyJoinColumn o @PrimaryKeyJoinColumns • Q o @...
NULL 博文链接:https://lc2586.iteye.com/blog/721279
onetoone fk 一对一外键关联带数据库。 onetoone fk 一对一外键关联带数据库。 onetoone fk 一对一外键关联带数据库。