草庐IT

Hibernate-Session

全部标签

java - 如何使用 Hibernate 获取关联的实体

我正在使用Springrest和Hibernate开发一个应用程序,我想从数据库中获取嵌套记录,就像我正在获取User的Profession,现在我想获取与我之前获取的Profession关联的Users。这是我的Dao类@SuppressWarnings({"unchecked","rawtypes"})publicListgetProfessionById(longid)throwsException{session=sessionFactory.openSession();Criteriacr=session.createCriteria(Profession.class);cr

java - 使用 Open Session In View 时事务传播如何工作?

我真的很困惑Spring中使用Hibernate的事务传播。我在我的服务层方法上使用Spring@Transactional注释。有些被标记为“只读=真”。如果我的一个只读服务方法调用了一个非只读方法,我该如何处理?我想我可以标记我所有的读写方法来支持REQUIRES_NEW传播,但这会导致我可能不想要的行为-即我只想要一个新事务只读方法称为读写方法。如果一个读写方法调用另一个读写方法,我就不需要新的事务。考虑到所有这些,我不明白OpenSessionInView(OSIV)是如何工作的!当然,在Spring中使用OSIV,OpenSessionInViewFilter必须在调用服务方

java - 使用 ServletContext 的 session 对象

有什么方法可以从ServletContext对象获取一个在整个session期间都存在的对象?? 最佳答案 不,不可能从ServletContext获取session。ServletContext的重点是获取应用程序范围属性而不是session范围。 关于java-使用ServletContext的session对象,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2076513/

java - 每个子类继承关系表 : How to query against the Parent class without loading any subclass ? ?? ( hibernate )

假设一个每个子类继承关系的表可以在下面描述(来自wikibooks.org-参见here)注意父类不是抽象的@Entity@Inheritance(strategy=InheritanceType.JOINED)publicclassProject{@Idprivatelongid;//Otherproperties}@Entity@Table(name="LARGEPROJECT")publicclassLargeProjectextendsProject{privateBigDecimalbudget;}@Entity@Table(name="SMALLPROJECT")publi

java - 用于简单 CRUD 的 EJB 3 session Bean 设计

我正在编写一个应用程序,它的唯一目的是执行CRUD操作以维护数据库中的记录。一些表/实体之间存在关系。我见过的大多数创建sessionbean的示例都处理复杂的业务逻辑/操作,这些逻辑/操作与许多我没有的实体进行交互。由于我的应用程序非常基础,sessionbean的最佳设计是什么?我正在考虑为每个实体设置一个sessionbean,该sessionbean具有定义的方法CRUD。然后我想到将所有这些sessionbean组合到一个sessionbean中。然后我发现这篇博文很有趣,但我必须承认我并不完全理解它(什么是ServiceFacade?)。我倾向于sessionbean/实体

java - 为什么使用 Hibernate 和 Oracle 10g 方言通过 JPA 创建名为 hibernate_sequence 的序列?

我所有的实体都使用这种类型的@Id@Id@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="MYENTITY_SEQ")@SequenceGenerator(name="MYENTITY_SEQ",sequenceName="MYENTITY_SEQ")@Column(name="MYENTITY",nullable=false)privateLongid;或@Id@Column(name="MYENTITY")我发现总是创建一个名为hibernate_sequence的Oracle序列。为什么会这样?我该如何避免这种

java - 无效的 hibernate 警告? '@Access(AccessType.PROPERTY) on a field has no effect'

我有以下实体类用户:publicclassUserimplementsSerializable{@Column(length=10,name="user_type")@Access(AccessType.PROPERTY)privateStringuserTypeS;@TransientprivateUserTypeuserType;...publicvoidsetUserType(UserTypeuserType){this.userType=userType;this.userTypeS=this.userType.getType();}protectedvoidsetUserTy

java - Hibernate limit 结果查询

hibernate查询的maxresult属性如何工作?在下面的例子中:Queryquery=session.createQuery("fromMyTable");query.setMaxResults(10);这会从数据库中获取所有行,但只显示其中的10行吗?或者这与sql中的limit相同。 最佳答案 它与LIMIT相同,但它是独立于数据库的。例如MSSQLServer没有LIMIT,所以hibernate负责翻译它。对于MySQL,它将LIMIT10附加到查询。因此,始终使用query.setMaxResults(..)和qu

java - 在没有注释的情况下将 Hibernate 迁移到 JPA

我有一个大型的非JavaEE、基于JSF的Web应用程序项目。我们的系统是分层的(在源代码意义上):有一个数据模型包,DAO包建立在它之上。我们在DAO包中专门使用Hibernate的XML配置映射。我们真的不想用注解混淆数据模型,但也不是特别执着于Hibernate(除了映射相当复杂)。我强烈考虑转向JavaEE并将我们的DAO对象构建为EJB。但是由于我们不愿意丢弃Hibernate的XML,这引出了几个问题:是否可以在模型上没有JPA注释的情况下将Hibernate与JPA一起使用?如果不是,我的EJB是否有可能与Hibernate进行事务处理?我认为这称为JTA支持,但不确定。

java - Hibernate 多对多关联 : left hand side collection contains elements, 但右侧集合为空

我在持久层中遇到了多对多关联的问题。我的场景如下:一个用户可以有多个角色,一个角色可以有多个用户。在测试期间,我遇到了一个奇怪的行为。我创建了角色对象和几个用户对象。角色被设置给每个用户。在此之后,使用DAO保存用户。然后加载其中一个用户以检查他是否获得了在保存用户对象之前传递给他的角色。对用户调用getRoles()表明角色设置正确。为了检查反向是否也有效,使用角色DAO从数据库加载角色对象。但是在角色对象上调用getUsers()只会返回一个空集,尽管它应该包含具有该角色的所有用户。我仔细检查了数据库表,但似乎一切正常。用户、角色和user_role表都已正确填写。那么为什么角色对