gpt4 book ai didi

java - Hibernate初学者问题——简单映射与非简单异常!

转载 作者:太空宇宙 更新时间:2023-11-04 08:35:08 25 4
gpt4 key购买 nike

请帮助我解决这个 hibernate 问题,我是 hibernate 新手,仍在尝试解决它。我似乎无法解决这个问题。我想我错过了一些非常简单的东西。

我按照此处的示例实现了多对一映射,因为我的要求几乎相同:http://www.coderanch.com/t/217519/ORM/java/Hibernate-Newbie-Many-Relation-Tutorial

请注意,当我尝试保留 Picture 对象时,用户变量(在该时间点)为空,就像所有其他变量条形图像一样。

另请注意,我已通过 hibernate 配置文件中的配置将 hibernate 设置为自行生成数据库架构。

这是我的映射文件(已删除声明)

用户.hbm.xml

<class name="msc.model.User" table="USER">
<id name="id" column="USER_ID">
<generator class="native"/>
</id>
<property name="username"/>
<property name="email"/>

<bag name="pictures"
table="PICTURE"
lazy="true"
cascade="save-update">
<key column="PICTURE_ID"/>
<one-to-many class="msc.model.Picture" />
</bag>

</class>

和Picture.hbm.xml

<class name="msc.model.Picture" table="PICTURE">
<id name="id" column="PICTURE_ID">
<generator class="native"/>
</id>
<property name="story"/>
<property name="tattooist"/>
<property name="pic"/>

<many-to-one name="user"
class="msc.model.User"
column="USER" />

<property name="image" type="blob">
<column name="IMAGE" not-null="true" />
</property>

</class>

类文件(去除 getter 和 setter)

图片.java

package msc.model;

import java.io.File;
import java.sql.Blob;

public class Picture {

private Long id = null;
private User user = null;
private File pic = null;
private String story = null;
private String tattooist = null;
private Blob image = null;
}

用户.java

package msc.model;

import java.util.ArrayList;
import java.util.List;

public class User {

private Long id = null;
private String username = null;
private String email = null;
private List<Picture> pictures = null;
}

持久化代码(注意bFile是从文件创建的字节流):

    Session hib_ses = HibernateUtil.getSessionFactory().getCurrentSession();

hib_ses.beginTransaction();
Picture picture = new Picture();
picture.setImage(Hibernate.createBlob(bFile));

Long id = (Long) hib_ses.save(picture);

hib_ses.getTransaction().commit();

这是一个异常(exception):

Cannot add or update a child row: a foreign key constraint fails (`msc`.`picture`, CONSTRAINT `FK85BE8DE2885129D` FOREIGN KEY (`PICTURE_ID`) REFERENCES `user` (`USER_ID`))

请帮忙!

最佳答案

如果这是您得到的真正错误,那么就会发生一些非常奇怪的事情。

Cannot add or update a child row: a foreign key constraint fails (`msc`.`picture`, CONSTRAINT `FK85BE8DE2885129D` FOREIGN KEY (`PICTURE_ID`) REFERENCES `user` (`USER_ID`))

这表示 PICTURE.PICTURE_ID 是对 USER.USER_ID 的引用。但PICTURE_ID是图片的PK,Hibernate在插入时会生成它。您是否想创建从 PICTURE.USER 到 USER.USER_ID 的约束?

哦,我看到你写了你通过 Hibernate 生成架构。我认为错误在于你的“包”定义。键列不应是 PICTURE_ID,而应是 USER。

关于java - Hibernate初学者问题——简单映射与非简单异常!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6580099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com