草庐IT

Hibernate

全部标签

java - 在嵌入式 HSQL 数据库中创建模式的最佳方式

我目前正在使用以下设置在嵌入式数据库中创建模式,然后再针对它运行我的测试在我的应用程序上下文中创建模式.sqlcreateschemaST_TESTAUTHORIZATIONDBA;hibernate属性我的问题是这是执行此操作的最佳方法吗?或者我可以在我的属性中使用不同的架构名称吗?或者在jdbc:embedded-database元素中设置模式名称 最佳答案 默认情况下,HSQL创建一个名为PUBLIC的模式。source:HSQLdocumentation鉴于模式名称从未在测试中出现(命名查询/实体管理器进行交互),您可以更改

java - @Basic 注解到底做了什么?

Java变量上的@Basic注释似乎只声明变量必须保存为具有NOTNULL约束的列。那是对的吗?这post说:@Basic(optional=false)@Column(nullable=false)The@BasicannotationmarksthepropertyasnotoptionalontheJavaobjectlevel.Thesecondsetting,nullable=falseonthecolumnmapping,isonlyresponsibleforthegenerationofaNOTNULLdatabaseconstraint.TheHibernateJPA

java - 所有数据库查询的全局 hibernate 过滤器

我正在为我的Web应用程序使用SpringMVC和Hibernate。我正在寻找一种方法来创建适用于我的DAO类中的每个查询的各种全局hibernate过滤器,而无需在每个DAO方法中显式启用它。要求是按用户选择的session变量过滤记录。所以我们的查询参数将保存在session中,并且该session中的所有DAO查询都需要通过该变量过滤结果。这里的目的是避免每个DAO方法中的所有可重复过滤代码。欢迎提出任何想法! 最佳答案 在此列出我处理此事的方式。以下是基于与@Rp-的讨论和提出的建议here.三个主要元素用于配置:-Spr

java - JPA+Hibernate+@Transactional注解的spring事务支持的奇怪行为

我在相对简单的用例上发现了非常奇怪的行为,可能因为对spring@Transactional性质的了解不深,我无法理解它,但这很有趣。我有一个简单的用户dao,它扩展了springJpaDaoSupport类并包含标准保存方法:@TransactionalpublicUsersave(Useruser){getJpaTemplate().persist(user);returnuser;}如果在我向同一个类添加新方法之前工作正常:UsergetSuperUser(),此方法应该返回isAdmin==true的用户,如果数据库中没有super用户,方法应该创建一个。这就是它的样子:pub

java - Spring + EntityManagerFactory +Hibernate 监听器 + 注入(inject)

我有一个简单的问题。可以通过@Ressource或@Autowired向HibernateEventlistener添加依赖注入(inject)吗?我将向您展示我的entitymanagerfactory配置:目前我通过jpa.properties注册我的监听器,hibernate.ejb.event.load=com.example.hibernate.events.LoadEvent但在这种情况下,我的监听器中没有Spring注入(inject)。我找到了一个解决方案,但这使用了sessionFactory而不是entitymanager或者我可以在我的上下文中修改sessionf

java - hibernate : mapping files or annotations?

当我几天前开始使用Hibernate时,我只是想知道:假设您要从头开始一个项目。您会使用基于注释的映射还是Hibernate映射文件来生成数据库模式。据我了解,Hibernate映射文件提供了一些您无法通过注释找到的功能(至少,不是完全等同的功能)。但是,我仍然觉得现在使用Hibernate的项目宁愿选择基于注释的而不是Hibernate映射文件。有没有人选择映射文件而不是注释,如果是,原因是什么? 最佳答案 我看到使用@Annotations有什么优势:编译器安全基于@Entity,你可以轻松区分实体和非实体使用packagesT

java - JPA 映射中的原始类型。如果数据库列可能为 NULL 怎么办?

给定使用JPA映射的此类(使用JPA1.0和Hibernate):@EntitypublicclassFoo{privateintbar;/*...*/}如果我尝试加载BAR列设置为NULL的记录,会发生什么情况?是否可以指定当相应列为NULL时如何设置bar字段?注释我知道这不是最佳做法。这个问题更多是出于好奇,也是受到这种情况的启发:数据库表是一个暂存表:添加NOTNULL约束是不切实际的。坏数据是预料之中的,我的代码的重点是在将数据加载到“真实”数据库之前验证、清理和/或拒绝数据。我有一些字段可接受的默认值。例如,一个boolean标志应该默认为false。

java - 如何保持运行两个 Java 应用程序的 Hibernate 缓存一致性?

我们的设计有一个jvm,它是一个jboss/webapp(读/写),用于通过hibernate(使用jpa)将数据维护到数据库。该模型有10-15个持久类,关系深度为3-5个级别。然后我们有一个单独的jvm,它是使用这些数据的服务器。由于它持续运行,我们只有一个长数据库session(只读)。目前不涉及内部jvm缓存-因此我们手动从一个jvm发出信号。现在,当webapp更改某些数据时,它会向服务器发出信号以重新加载更改后的数据。我们发现我们需要告诉hibernate清除数据然后重新加载它。仅仅对数据库进行获取/合并并不能完成这项工作——主要是关于层次结构中几层的对象。关于此设计是否存

java - 使用 Hibernate JPA 在列中存储对象

是否可以仅使用一张表来存储如下内容?现在,hibernate将做的是创建两张表,一张用于Families,一张用于people。我希望将familymembers对象序列化到数据库中的列中。@Entity(name="family")classFamily{privatefinalListfamilyMembers;}classPerson{StringfirstName,lastName;intage;} 最佳答案 这是一个糟糕的设计,我真的不推荐它(你应该创建另一个表)但它是可能的。首先,您需要使用byte[]属性来保存将存储在

java - 使用注释扩展 hibernate 实体

我需要在不使用抽象类的情况下扩展具有相同特征的实体。我可以编写如下代码吗?@Entity@Table(name="ABC")@SequenceGenerator(sequenceName="SEQ_ABC",name="idGenerator",allocationSize=1)publicclassAbc{..//definemembers}@Entity@Table(name="EX_ABC")publicclassExAbcextendsAbs{..//defineextras..}提前谢谢 最佳答案 是的,这个没有任何问题。