我正在使用Hibernate3.3.1,我想在人员和指定公司之间建立关系。他们应该松耦合,但我想安排通过级联创建公司,而不是显式调用saveOrUpdate(newCompany)。
我定义了以下实体:
class Company
{
@Id
Long companyId;
String name;
}
class Person
{
@Id
Long personId;
String name;
@ManyToOne(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE})
Company company;
}
在我的小岛内,我正在执行以下操作:
testpers.setCompany (newCompany);
session.saveOrUpdate(testpers);
我得到一个例外
org.hibernate.TransientObjectException:对象引用了一个未保存的瞬态实例-
在刷新之前保存该瞬态实例:consearch.model.core.Company
当使用“ cascade = CascadeType.ALL”进行注释时,它可以工作,但是我也不想删除(例如,如果公司被删除,那么该人也不应被删除)
我想知道在事先感谢您之前没有人遇到过这个问题。尚恩
@Cascade
使用非JPA Session.saveOrUpdate()
方法时,可能需要启用Hibernate自定义。
添加@Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
或使用Session.persist()
@没有复合关系的多通关系可以正常工作: 这执行1SQL查询,仅从Telefoni表中获取一行,持续约10ms。 但是,当添加任何带有复合@JoinColumns的@manytone关系时,延迟抓取将停止工作: 这将执行37个SQL查询,急切地获取每个父实体和每个父实体的父实体,直到解决所有关系。这将持续大约600毫秒。 由于向我的实体添加了一个额外的关系,我的性能下降了60倍...除了更改我的数据
我正在开发一个项目,它以前在API23和22上都能很好地工作,然而,当应用程序一启动它就会崩溃(甚至连activity都无法加载)--只在API22上,在API23上它能很好地工作。日志对我没有太大帮助,我已经不知道是什么导致了这个错误的发生。它抱怨的类是清单中定义的App类。下面是一些可能有助于分析的代码: null public class App扩展com.orm.sugarapp{ } 应
我正在使用连接到web服务 这仅适用于AsyncTask。我无法在普通活动上执行上述语句(没有AsyncTask) 这是故意的行为,还是我错过了什么。 顺便提一下,这是我的第一个问题
问题内容: 我看不到“多对一”关系与“一对一”关系的架构有什么区别: 与 有什么区别吗? 问题答案: 它们在架构上看起来完全相同,但是在Hibernate Layer上有所不同。 如果尝试这样的操作: 一切都会好起来的。但是,保存后,如果您尝试获取订单: 当然,在两种情况下,您的Address类应该看起来有所不同。
问题内容: 当我尝试保存顶级实体(使用JPA)时,我是否需要从数据库中重新获取ManyToOne映射实体并进行设置,还是不能仅设置(ManyToOne映射实体的ID并保存顶级实体?)它抛出的实体:org.hibernate.TransientObjectException: 我们正在使用的表结构: (这两个类都具有用于所有字段的setter和getter方法以及默认构造函数,该构造函数以主键作为参
问题内容: 我目前正在阅读有关实体关联的Hibernate文档,但遇到一些困难却难以理解。它在本质上做的区别和联系。尽管我在实际项目中使用了它们,但是我无法完全理解它们之间的差异。据我了解,如果一个表/一个实体与另一个实体有关联,则该关联应来自另一侧。那么,我们应该如何根据具体情况决定选择哪个呢?它又如何影响数据库/查询/结果?到处都有很好的例子吗? PS:我认为这与问题相关,如果有人可以解释关联