草庐IT

HIBERNATE

全部标签

java - 如何将 Hibernate 映射集加载为不可修改的集?

我正在开发的一个应用程序专门使用Hibernate从数据库中获取一堆持久对象到内存中。应用程序会时不时地从数据库中刷新这个内存中的快照,这应该是与数据库的唯一通信。然后将内存中的对象用于一系列计算。计算不得修改这些对象。除了某个地方的某个类(class)不小心做了,我不得不花一天时间来寻找这个错误。现在我想知道使整个对象树不可变的最佳方法是什么。假设类层次结构如下所示:publicclassBuilding{//persistententityprivateStringname;//hibernate-mappedpropertyprivateSetinhabitants;//hibe

java - 奇怪的 classCastException hibernate 3.5 glassfish

您好,我有一个我自己无法解决的问题。我有一个war文件打包在ear中并在glassfish3.0.1上运行,使用hibernate3.5作为JPA提供程序。我用maven编译,用idea或者手动部署。每次我在我的DAO中遇到强制转换异常时:java.lang.ClassCastException:com.myproject.domain.entity.Usercannotbecasttocom.myproject.domain.entity.User其他时候它工作得很好。这种行为没有模式。有人可以阐明这里发生的事情吗?抛出异常的示例方法在com.myproject.domain.dao

java - Hibernate session.contains(类 clazz,序列化 id)

我希望能够检查session是否包含给定类/标识符的实体。我目前看不到执行此操作的方法。contains()接受一个实体对象而不是类+键get()如果实体不存在则查询数据库,这是我不想做的load()永远不会返回null,因为代理总是被创建,所以我不能使用这个方法是否可以在不对数据库产生副作用/查询的情况下执行上述操作? 最佳答案 这个有效:publicbooleanisIdLoaded(Serializableid){for(Objectkey:getSession().getStatistics().getEntityKeys(

java - JPA混合继承策略

我有3个实体:@EntitypublicabstractclassA{@IdpublicLongid;publicStringa1;publicStringa2;publicStringa3;//muchmorefields//gettersandsetters}@EntitypublicclassBextendsA{publicStringb1;publicStringb2;publicStringb3;//muchmorefields//gettersandsetters}@EntitypublicclassCextendsA{publicStringc;//that'sit.no

java - hibernate 和 spring 中没有 session 代理

我正在创建一个职位门户管理员。我正在使用Spring+hibernate。我已经为添加工作创建了页面,它工作正常,但是当我使用同一页面编辑工作时,出现异常:org.hibernate.LazyInitializationException:couldnotinitializeproxy-noSessionatorg.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:132)atorg.hibernate.proxy.AbstractLazyInitializer.getImpl

java - getSingleResult 返回 hibernate 中 native 标量查询的代理

我正在努力将我的JPA持久性提供程序从EclipseLink2.3切换到Hibernate3.6.5.Final。问题出在native查询上。注意:这不是EclipseLink的问题。我正在尝试从我没有为其声明实体的表中获取标量值、String。这是代码:Queryq=em.createNativeQuery("selectdescriptionfromfoowherefoo_id=?");q.setParameter(1,fooId);Stringdescription=(String)q.getSingleResult();使用Hibernate我得到一个ClassCastExce

java - 如何提高 Java 中的 Hibernate 性能?

我有数以千计的记录需要通过一次用户点击来检索。目前它给我的结果很慢,我必须等待很长时间。有没有一种方法可以改进使用hibernate检索这些结果?我有一个案例,其中有一个选择查询的方法将每分钟运行一次。这是Hibernate给我缓慢结果的地方。我将Hibernate与MySQL结合使用。 最佳答案 常见的做法是启用二级缓存和查询缓存。您的数据将从内存中读取,而不是从数据库中读取。关于它的好文章here其他有用的东西:1索引-如果有where和ordering-你必须为你正在搜索/排序的字段建立索引-这可以将搜索速度提高10倍2非规范

javax.naming.NamingException : JBAS011843: Failed instantiate InitialContextFactory org. jnp.interfaces.NamingContextFactory 来自类加载器

大家好,我在Jboss-as-7.1.1中遇到了一些问题。我正确部署但是当我从客户端发送请求时出现错误。我正在使用Jboss-7.1.1,部署文件夹是standalone/deployment(axis2.war,response.war,SpSpecific.ear,responsecomponet.ear)部署日志:-13:00:51,457INFO[org.jboss.modules]JBossModulesversion1.1.1.GA13:00:52,261INFO[org.jboss.msc]JBossMSCversion1.0.2.GA13:00:52,381INFO[o

java - 如何持久化 EnumSet(使用两个数据库表)?

我想在我的实体中将一组选项表示为EnumSet,并在我的数据库中表示为一对多关系。这是如何正确完成的?我只能找到旧的(预注释)答案或不使用两个表的答案。我定义了以下表格:CREATETABLEUsers(idSERIALPRIMARYKEY,nameVARCHAR(255)NOTNULLUNIQUE);CREATETABLEUser_Options(user_idINT,user_optionVARCHAR(255),PRIMARYKEY(user_id,user_option),FOREIGNKEY(user_id)REFERENCESUsers(id)ONDELETECASCADE

java - 在 hibernate 启动时删除所有表

出于开发目的,我如何以在运行前删除所有表的方式配置hibernate?我不想在运行我的代码之前不断地手动删除所有表。我已经在用了create但这似乎不起作用,因为我遇到了几个错误,这些错误是由上一次运行的错误模式引起的。编辑也许我的问题有点误导。我想要一个干净的数据库。这不仅是因为实际的运行时错误,还因为每次运行都有一个干净的数据库。create-drop忽略hibernate未知的表(如果您正在使用表名,这种情况经常发生)。 最佳答案 使用值create-drop而不是create 关