草庐IT

java - JPA/Hibernate 以编程方式切换架构

我目前正在做一个有以下要求的新项目:多个数据库模式持有具有相同结构的相同表(简而言之:多个模式的一个实体)。是否可以通过代码在这些模式之间切换?我想要实现的是:用户选择模式B并更新其中的一些实体。在此之后,他在模式A中插入,依此类推。我知道我可以通过基本的JDBC为语句提供模式来做到这一点,但如果我能避免的话,我会这样做。也许其他一些javaORM可以做到这一点?我只熟悉JPA/Hibernate。问候 最佳答案 您可以使用单独的SessionFactory或EntityManagerFactory,每个模式一个。既然你说过用户选择

java - transient 变量的注解@Basic

我有一个POJO类,它包括:-持久属性,-transient特性。在编写HQL时,我同时考虑了两者:持久性和transient性。IE。HQL类似selectpersistent_properties,transient_propfromPojo_classname正确吗?我可以给transient变量写@Basic注解吗? 最佳答案 不,这是不正确的。HQL查询转换为SQL。@Transient属性不在数据库中,因此SQL查询将无法查询该属性。@Basic和@Transient是矛盾的。第一个告诉“这个属性是持久的”,第二个告诉“

java - 使用单向或双向关系的不同行为

我想保留一个具有某些资源(内联或附件)的邮件实体。首先,我将它们关联为双向关系:@EntitypublicclassMailextendsBaseEntity{@OneToMany(mappedBy="mail",cascade=CascadeType.ALL,orphanRemoval=true)privateListresource;privateStringreceiver;privateStringsubject;privateStringbody;@Temporal(TemporalType.TIMESTAMP)privateDatequeued;@Temporal(Temp

java - 错误 : annotation type not applicable to this kind of declaration

我正在尝试编译我正在编写的JavaWeb应用程序,但我遇到了编译错误,我不知道该如何处理。通过谷歌搜索,我发现了thisSO问题,但是提问者使用的是EJB,而我的错误是在JPA实体类中。这是Maven构建错误。[INFO]------------------------------------------------------------------------[INFO]BUILDFAILURE[INFO]------------------------------------------------------------------------[INFO]Totaltime:3

java - JPA 条件返回页面和总计

对于分页数据(分页),我需要返回符合我的条件的记录总数和结果第一页。这对于为用户显示信息和计算预期的页面总数(在客户端)很有用。目前,我运行同一个查询两次,一次用于总计数,一次用于实际记录。我希望有一个更有效的方法。可以将这两个查询合并为对数据库的一次调用吗?计数:CriteriaBuildercb=em.getCriteriaBuilder();CriteriaQuerycq=cb.createQuery(Long.class);Rootr=cq.from(VersionJpa.class);Predicatep=cb.conjunction();p=//somefilteringc

java - 在 JPA 中,是否有一种与数据库无关的方法来检查表是否存在?

我想知道是否有一种与数据库无关的方法来检查JPA中是否存在某个表(特别是eclipse链接)。现在我们使用的方式是使用这样的原生查询:selectcount(*)fromtable_namewhere1=2如果抛出异常,我们就知道该表不存在。而且,据我所知,这适用于大多数SQL数据库。我不知道的是它是一个hacky查询,当表不存在时它会抛出SQL异常。我希望能够执行返回true的查询/false而不是noerror/error.但我知道如何做到这一点的唯一方法是查询数据字典,这不会与数据库无关。在JPA中,是否有一种与数据库无关的方法来检查表是否存在? 最佳

java - 在有状态的 ejb 扩展中通过查找找到的 JPA 实体不受管理

我以为em.find找到的一个entity是em自动管理的,连出一个事务,但是下面的这个class好像相反。是我错了还是那堂课有什么错误?@Stateful@TransactionAttribute(NOT_SUPPORTED)publicclassCustomerGateway{@PersistenceContext(unitName="customersPU",type=EXTENDED)privateEntityManagerem;privateCustomercustomer;publicCustomerfind(Longid){//customerisnotmanaged!t

java - Hibernate Envers 因 @Converter 和 AttributeConverter (JPA 2.1) 而失败

我在Envers和MySql5.6中使用Hibernate4.3.4。如果没有JPA2.1转换器,下面的Party实体将在Configuration.buildSessionFactory()处失败,因为Hibernate不知道如何处理名称类:@Entity@AuditedpublicclassParty{protectedNamename;...}异常(exception)情况是:org.hibernate.MappingException:Couldnotdeterminetypefor:ModuloADM.Party.Name,attable:Party,forcolumns:[

java - 每个实体的 Hibernate 命名策略

我有一个全局命名策略,但对于一些实体我想使用不同的命名策略。在jpa或hibernate中可以吗?澄清:我不想使用@Table(name="xxx")或@Column(name="xxx")。我问的是命名策略组件(例如此处描述:Hibernatenamingstrategy)。这是一个为您推断列名和表名的组件 最佳答案 我在Hibernate源代码中看不到任何方法。EntityBinder使用ObjectNameNormalizer.NamingStrategyHelper来命名,它从Configuration.namingStra

java - 如何将具有 2 个实体名称的相同类迁移到 Spring Data JPA?

我正在将一个应用程序从Hibernate迁移到SpringDataJPA。我已经迁移了一些存储库并且可以正常工作。我现在有一个特殊情况需要转换。我的.hbm.xml中有这个:请注意我只有1个类SoundNotification,但它与2个不同的entity-name(SoundNotificationWithData和SoundNotificationWithoutData)一起使用是否可以将其转换为SpringDataJPA?我是否需要创建2个Java类作为“解决方法”?另一个例子是这个:..........在这里,我们在进行一些汇总计算后将相同的“Java对象”存储在不同的表中。我