我正在尝试使用hibernate将数据插入数据库。这是我要执行的动作
session.beginTransaction();
pojo.StuDetails stu = new StuDetails();
stu.setFName(f_name);
stu.setLName(l_name);
stu.setSex(sex);
stu.setDob(dob);
pojo.Subject sub = new Subject(subject, day, time);
pojo.SubjectHasStuDetails shs = new SubjectHasStuDetails(stu, sub);
session.save(shs);
session.getTransaction().commit();
但这给我一个错误的说法
线程“主”中的异常org.hibernate.TransientPropertyValueException:非null属性引用了一个瞬态值-
必须在当前操作之前保存瞬态实例
这是我的学生详细信息实体
public class StuDetails implements java.io.Serializable {
private Integer id;
private String FName;
private String LName;
private String sex;
private String dob;
private Set subjectHasStuDetailses = new HashSet();
...
//constructors and getters, setters
我的学生详细信息hbm.xml
<hibernate-mapping>
<class name="pojo.StuDetails" table="stu_details" catalog="laravel_test" optimistic-lock="version">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="FName" type="string">
<column name="f_name" length="45" not-null="true" />
</property>
<property name="LName" type="string">
<column name="l_name" length="45" not-null="true" />
</property>
<property name="sex" type="string">
<column name="sex" length="45" not-null="true" />
</property>
<property name="dob" type="string">
<column name="dob" length="45" not-null="true" />
</property>
<set name="subjectHasStuDetailses" table="subject_has_stu_details" inverse="true" lazy="true" fetch="select">
<key>
<column name="stu_details_id" not-null="true" />
</key>
<one-to-many class="pojo.SubjectHasStuDetails" />
</set>
</class>
</hibernate-mapping>
我的主题实体看起来像
public class Subject implements java.io.Serializable {
private Integer id;
private String subName;
private String day;
private String time;
private Set subjectHasStuDetailses = new HashSet();
...
//constructors and getters, setters
Subject.hbm.xml
<hibernate-mapping>
<class name="pojo.Subject" table="subject" catalog="laravel_test" optimistic-lock="version">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="subName" type="string">
<column name="sub_name" length="45" not-null="true" />
</property>
<property name="day" type="string">
<column name="day" length="45" not-null="true" />
</property>
<property name="time" type="string">
<column name="time" length="45" not-null="true" />
</property>
<set name="subjectHasStuDetailses" table="subject_has_stu_details" inverse="true" lazy="true" fetch="select">
<key>
<column name="subject_id" not-null="true" />
</key>
<one-to-many class="pojo.SubjectHasStuDetails" />
</set>
</class>
</hibernate-mapping>
这是SubjetcHasStuDetails实体
public class SubjectHasStuDetails implements java.io.Serializable {
private Integer id;
private StuDetails stuDetails;
private Subject subject;
...
//constructors and getters, setters
SubjectHasStuDetials.hbm.xml
<hibernate-mapping>
<class name="pojo.SubjectHasStuDetails" table="subject_has_stu_details"
catalog="laravel_test" optimistic-lock="version">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<many-to-one name="stuDetails" class="pojo.StuDetails" fetch="select">
<column name="stu_details_id" not-null="true" />
</many-to-one>
<many-to-one name="subject" class="pojo.Subject" fetch="select" >
<column name="subject_id" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
有人可以帮我解决这个错误吗…谢谢..
在您 SubjectHasStuDetials.hbm.xml
进行以下更改时:
<many-to-one name="stuDetails" class="pojo.StuDetails" fetch="select" cascade="all">
<column name="stu_details_id" not-null="true" />
</many-to-one>
<many-to-one name="subject" class="pojo.Subject" fetch="select" cascade="all" >
<column name="subject_id" not-null="true" />
</many-to-one>
添加 cascade="all"
属性不仅可以stuDetails
和subject
许多对一个标签。
cascade = “all”
则在父类对象上所做的更改也将影响子类对象,如果我们编写cascade =“ all”,则在父对象上进行的所有操作(如插入,删除,更新)也将对子对象产生影响。每个上下文实例都会有一个变更跟踪器 ChangeTracker,它负责记录要写入数据库的变更。当你更改实体类型实例时,这些变更会被记录到变更跟踪器,然后在你调用 SaveChanges 的时候被写入数据库。数据库提供程序会负责而将变更翻译为数据库特定的操作(比如关系数据库的 INSERT、UPDATE、DELETE 命令)。
我有问题保存我的数组列表。当应用程序销毁或更改意图或更改方向时,我想保存我的数组列表: 首先,我尝试保存在文件中,但Paint类不是可序列化类。第二,我尝试使用onSaveInstanceState(Bundle outState)/onRestoreInstanceState(Bundle savedInstanceState),但我无法保存Arraylist;第三,我尝试使用数据库,但没有任何
Im使用firebase,由于某些原因,我的代码没有推送数据,并且Im没有在firebase URL中看到数据。我的密码是这样的 我得到警报“保存”,但我无法在firebase URL中找到数据。 此外,为Firebase中的每个url提供的API键有什么用途。 更新:这种情况发生在IE10中。在其他浏览器中,它工作得很好
问题内容: 我目前正在尝试创建一个包含人名和ip的sqlite数据库,虽然我的代码在运行时似乎可以正常运行,但是在运行 下面的代码后在终端中运行时,数据却无法显示。它和都在〜/ Desktop / SQL中运行 我的计算机正在运行OSX 10.11.4,python 3.4和SQLite 3.14.1 我尝试将ips更改为main.ips并返回 问题答案: 您似乎没有提交到数据库。您需要在关闭连接
刀 服务
除了独立的实体之外,你还可以保存模型中定义的关系。 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 添加新的实体对象图 如果你创建了一些新的关联实体,将其中之一添加到上下文实例时其他关联实体也将被添加。 在以下代码样例中,blog 和三个关联的 post 都会被插入到数据库中。post 集合会被发现并添加,因为它们可以通过 Blog.Posts 导航属性被获取。 using (var