懂hibernate请进【外键出错】…

过往记忆
领域专家: 大数据技术领域
2010-05-04 12:07:15
下面是我的文件:

package com.wyp.bbs.hibernate.DB;

// Generated 2010-5-3 12:33:31 by Hibernate Tools 3.2.0.b9

import java.util.HashSet;
import java.util.Set;

/**
* User generated by hbm2java
*/
public class User implements java.io.Serializable {

private int id;

private Headsculpture headsculpture;//头像

private String name;

public User() {
}


public int getId() {
return this.id;
}

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

public Headsculpture getHeadsculpture() {
return this.headsculpture;
}

public void setHeadsculpture(Headsculpture headsculpture) {
this.headsculpture = headsculpture;
}

public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}

}
上面的是user类,他和user表对应,user表的headpic和headsculpture表中的Hpath是关联的,
<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.wyp.bbs.hibernate.DB.User" table="user" catalog="bbs">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity" />
</id>
<many-to-one name="headsculpture" class="com.wyp.bbs.hibernate.DB.Headsculpture" fetch="select" >
<column name="headpic" />
</many-to-one>
<property name="name" type="java.lang.String">
<column name="name" not-null="true" />
</property>
</class>
</hibernate-mapping>


Headsculpture 类
package com.wyp.bbs.hibernate.DB;

// Generated 2010-5-3 12:33:31 by Hibernate Tools 3.2.0.b9

import java.util.HashSet;
import java.util.Set;

/**
* Headsculpture generated by hbm2java
*/
public class Headsculpture {

private int id;

private String hpath;


private Set users = new HashSet(0);

public Headsculpture() {
}



public int getId() {
return this.id;
}

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

public String getHpath() {
return this.hpath;
}

public void setHpath(String hpath) {
this.hpath = hpath;
}



public Set getUsers() {
return this.users;
}

public void setUsers(Set users) {
this.users = users;
}

}

Headsculpture 的配置

<?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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.wyp.bbs.hibernate.DB.Headsculpture" table="headsculpture" catalog="bbs">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity" />
</id>
<property name="hpath" type="java.lang.String">
<column name="Hpath" not-null="true" />
</property>

<set name="users" inverse="true" >
<key>
<column name="headpic" />
</key>
<one-to-many class="com.wyp.bbs.hibernate.DB.User" />
</set>

</class>
</hibernate-mapping>


下面是测试类

package com.wyp.bbs.Impl;

import java.io.UnsupportedEncodingException;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.wyp.bbs.hibernate.DB.Headsculpture;
import com.wyp.bbs.hibernate.DB.HeadsculptureDAO;
import com.wyp.bbs.hibernate.DB.UserDAO;

import com.wyp.bbs.hibernate.DB.User;


public class UserClient {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
UserDAO userDao = new UserDAO() ;

User user = new User() ;

HeadsculptureDAO Dao = new HeadsculptureDAO();

List list = Dao.findByHpath("default.gif") ;

Headsculpture headPic =(Headsculpture)list.get(0);

user.setHeadsculpture(headPic);

System.out.println(headPic.getHpath());
user.setName("wyp") ;
userDao.save(user) ;

}

}

上面的代码运行时出现下面的错误
Caused by: java.sql.SQLException: Duplicate key or integrity constraint violation message from server: "Cannot add or update a child row: a foreign key constraint fails (`bbs`.`user`, CONSTRAINT `FK_user_1` FOREIGN KEY (`headpic`) REFERENCES `headsculpture` (`Hpath`) ON DELETE SET NULL ON UPDATE SET NULL)"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1997)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2251)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1772)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1619)
at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
... 17 more
这是怎么回事啊??
...全文
322 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
swit1983 2010-05-10
  • 打赏
  • 举报
回复
主键生成策略还是用incriment比较好吧。确保user表中的headpic字段对应pic表中的主键。
bb100044535 2010-05-04
  • 打赏
  • 举报
回复
还有,有必要时要配上延时加载
即把lazy=“false”配上
bb100044535 2010-05-04
  • 打赏
  • 举报
回复
<many-to-one name="headsculpture" class="com.wyp.bbs.hibernate.DB.Headsculpture" fetch="select" >
<column name="headpic" />
</many-to-one>

应改成:
<many-to-one name="headsculpture" class="com.wyp.bbs.hibernate.DB.Headsculpture" fetch="select" >
<column name="Id" />
</many-to-one>

还有
<set name="users" inverse="true" >
<key>
<column name="headpic" />
</key>
<one-to-many class="com.wyp.bbs.hibernate.DB.User" />
</set>
应该为:
<set name="users" inverse="true" >
<key>
<column name="Id" />
</key>
<one-to-many class="com.wyp.bbs.hibernate.DB.User" />
</set>

你要配多对一或一对多要记得配上主表"headsculpture"的id即“Id”
试试看
过往记忆 2010-05-04
  • 打赏
  • 举报
回复
这个异常我还真是无语,弄了好久,还是没有解决啊??呵呵……希望大家帮帮啊!!急救啊!!5555555
过往记忆 2010-05-04
  • 打赏
  • 举报
回复
呵呵,不是我没有去操作,我已经修改了好多次数,还是出现那样的异常。
xiaomaha 2010-05-04
  • 打赏
  • 举报
回复
cascade="all" 或 save-update 级联关系,你根据图片名字读取到信息,然后在新增加一个用户, User和Headsculpture 有关联关系,所以你保存user的时候应该进行关联操作!
写出来那么久为什么不试呢?
xiaomaha 2010-05-04
  • 打赏
  • 举报
回复
cascade="all" 或 save-update 级联关系,你根据图片名字读取到信息,然后修改,然后在save? User,User和Headsculpture 有关联关系,所以你保存user的时候应该进行关联操作!
你式下!写出来那么久没式过么?
BearKin 2010-05-04
  • 打赏
  • 举报
回复
<key foreign-key="id">
<column name="headpic" />
</key>
BearKin 2010-05-04
  • 打赏
  • 举报
回复
检查下记录 首先你把数据库的记录全部删除 然后做次更新操作是否好使 然后检查下你那个列是怎么回事
过往记忆 2010-05-04
  • 打赏
  • 举报
回复
单个类是没有关系的,因为但各类就会成功,但是连上外键就不行,老是出现外键重复
swit1983 2010-05-04
  • 打赏
  • 举报
回复
没问题。
BearKin 2010-05-04
  • 打赏
  • 举报
回复
只保存USER的话会不会有问题? 如果还有问题把一对多的配置去掉 光是多对一有没有问题?
xiaomaha 2010-05-04
  • 打赏
  • 举报
回复
cascade="all"
hoojo 2010-05-04
  • 打赏
  • 举报
回复

<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="identity" />
</id>
将主键设置成String型的uuid增长模式,因为identity用的是数据库的自增策略。
所以要在插入以后才能生产id,而uuid则是通过hiberntate自动生产的唯一id。

过往记忆 2010-05-04
  • 打赏
  • 举报
回复
你回复的留言我看了一下,我也和那上面的一样配置来一下,但是还是不行
代码转载自:https://pan.quark.cn/s/50df8825dc0d Tensilica Xtensa指令集架构手册是一份详尽阐述Xtensa指令集架构(ISA)的参考指南,它主要面向Tensilica公司所推出的处理器核心,尤其是LX106核,同时亦涵盖了ESP8266和ESP32等相关内容。该手册全面介绍了Xtensa处理器核心的指令集、配置选项、扩展能力以及将架构映射至硬件的详细情况。接下来将依据手册中所述的知识点进行深入解读。 ### Xtensa指令集架构(ISA) Xtensa指令集架构是Tensilica公司为其处理器产品设计的一套指令集,该指令集具备高度的可配置性和可扩展性。这一特性使得Xtensa ISA能够在不同的应用领域和硬件需求中进行个性化定制,以满足特定的功能与性能要求。 #### 可配置性(Configurability) Xtensa ISA的可配置性体现在用户可以根据实际需求对处理器的多个方面进行定制。这包括但不限于: - **指令集扩展**:用户可以根据特定的应用需求添加新的指令,从而提升处理特定任务的效率。 - **寄存器文件扩展**:根据应用需求,可以增加或优化处理器的寄存器数量和类型。 - **协处理器扩展**:通过集成特定的协处理器,可以将专门的计算任务卸载到协处理器上,从而提升整体性能。 #### 可扩展性(Extensibility) Xtensa ISA不仅可配置,还拥有卓越的可扩展性,它支持多种扩展,包括: - **状态扩展(State Extensions)**:允许处理器添加新的状态寄存器,以支持新的功能或增强现有功能。 - **指令扩展(Instruction Extensions)**:...
下载代码方式:https://pan.quark.cn/s/8779ceeac982 YOLOv5被认为是一种功能卓越且精确度高的目标检测系统,它在即时处理场景中展现出优越的性能。"基于YOLOv5的火灾检测"计划致力于运用这项尖端的计算机视觉方法,以达成对火焰和烟雾的有效辨识,进而起到防止及降低火灾事故的作用。在这个压缩文件里,用户能够获取到预先训练完成的模型,这表示使用者能够直接执行推理检测,无需从头开始训练模型。 我们现在将详细探讨YOLO(You Only Look Once)系统。YOLO是一种单阶段的目标检测方法,它将目标检测任务转化成回归问题,通过直接预测边界框和类别可能性来迅速识别图像中的物体。YOLOv5是这一系列的最新迭代,由Ultralytics团队研发,它在前几代的基础上进行了改进,包括更迅速的训练速率、更精准的检测以及更强的适应性。 YOLOv5的关键优化包含: 1. **数据增强**:应用了Mosaic数据增强技术,这是一种融合了随机缩放、翻转、裁剪及色彩调节的技巧,增强了模型的普遍适用性。 2. **更高效的架构**:运用了SPP-Block(Spatial Pyramid Pooling)和Path Aggregation Network (PANet)设计,提升了特征提取的效能和精确度。 3. **权重初始化**:采用了更优化的权重初始化策略,使模型在初始训练阶段就能更快地达到收敛。 4. **联合训练**:YOLOv5支持多尺度训练,即同步训练不同尺度的网络,以改善对小目标的检测效果。 5. **优化的损失函数**:使用了GIOU(Generalized IoU)损失函数,改进了边界框的定位。 针对火灾检测的应用,YOLOv...

81,111

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧