草庐IT

java - 如何在 hibernate/JPA 中禁用自动更新

是否可以阻止hibernate自动更新持久对象?@TransactionalpublicResultTOupdateRecord(RequestTOrequestTO){Entityentity=dao.getEntityById(requestTO.getId());//nowupdatetheentitybasedonthedataintherequestTOValidationResultvalidationResult=runValidation(entity);if(validationResult.hasErrors()){//returnResultTOwithvalid

java - Hibernate 可以对不同于字段名称的实体属性使用逻辑名称吗?

比方说,有一个Hibernate实体通过注释配置了字段访问。我想映射一个Java类字段_name,以便它的Hibernate逻辑名称是name,例如,当从HQL查询引用时。我主要需要这个来Collection。预期不正确的建议:无法将访问类型切换为“属性”;该任务与物理列的名称无关。 最佳答案 根据我对您问题的理解-您可以这样定义实体。这将生成一个名为(NewName_ABCwithacolumnname)的hibernate表@Entity@Table(name="NewName_ABC")publicclassABC{.@Col

java - 指向 JPA/Hibernate 中同一实体的多个 @ManyToOne 字段

我有一个Order实体,它有一个billingAddress和一个shippingAddress。我还有一个Address实体。我试图让一个地址表同时包含送货地址和帐单地址,因为没有什么可以区分它们,并且帐单地址和送货地址在一个或多个订单中可以相同。我在Order的地址字段上使用了@ManyToOne,但我不确定实现此双向的正确方法。我有两个问题:@ManyToOne是否适合地址字段,因为它实际上是一个n:2关系,我只是使用两个单独的字段来表示?如果不是,我应该怎么做?假设1.没问题,我如何使映射双向(我应该在Address实体中使用什么注释?)?这可以通过在Address的注释中列出

java - 继承 JPA 和 Hibernate 问题

我在加载一些对象时遇到了一个奇怪的问题。我正在使用JPA1、hibernate-core版本3.3.0.SP1和hibernate-entitymanager版本3.4.0.GA假设我有这些JPA实体:@Entity@Table(name="SLC_ELE")@Inheritance(strategy=InheritanceType.JOINED)@DiscriminatorColumn(discriminatorType=DiscriminatorType.INTEGER,name=ElementoPrograma.C_ID_CTG_ELE)publicclassElement{..

java - Spring Data REST加入继承问题

我在单个JPA实体上有一个SpringDataRepository。该实体通过联合继承进行子类化。SpringDataREST似乎在解释这个结构时有问题,至少是自动的。或者我误解了Inheritance.JOINED的用法对具有事件的任何实体的任何请求都会返回以下内容:{cause:null,message:"Cannotcreateselflinkforclasscom.foo.event.SubEvent!Nopersistententityfound!"}也许我对这个项目的要求太多了,不知道如何处理这个问题,但是有没有一种解决方法可以将我所有的Events分组在同一个/event

java - 单元测试时静态元模型属性为空

我在外部包中有@Entity类,它也有静态元模型。在我的应用程序的服务类中,我使用这些元模型和EntityManager/CriteriaBuilder/CriteriaQuery来检索我的数据。这在运行应用程序时工作正常。但是,在运行单元测试时,我的元模型及其属性始终为空。代码...packagecom.example.core.entities;@Entity@Table(schema="lookup",name="BookingSystem")publicclassBookingSystemimplementsILookupEntity,IAuditEntity,Serializ

java - 如何国际化 Hibernate 实体

我正在尝试为Java实体添加国际化(多语言)支持。在向每个新字段添加翻译时,我愿意接受尽可能少的样板代码的任何选项。我不限于JPA,也可以使用hibernate注释。在最坏的情况下,纯sql也适用。可能有一些我还没有找到的现成库。应该没有必要遵循我下面描述的想法。理想情况下,我需要数据库看起来像这样:i18n+------+--------+------+|id|locale|text|+------+--------+------+|1|en|foo|+------+--------+------+|1|de|bar|+------+--------+------+|2|en|foo

java - 使用 JUnit4 进行测试时,Spring @transactional 不会启动事务

我有以下配置。org.hibernate.dialect.SQLServerDialecttruetrueorg.hibernate.dialect.SQLServerDialectfalsefalsetruetrue然后,当我运行具有插入语句的测试时,它们会产生这样的错误消息:javax.persistence.TransactionRequiredException:Executinganupdate/deletequeryatorg.hibernate.ejb.QueryImpl.executeUpdate(QueryImpl.java:47)经过深思熟虑,我尝试了这个:@Run

java - 与 Bean Validation API 结合使用时,Hibernate 不遵循 JPA 规范?

这个问题是这个问题的后续问题:JPAConstraintViolationvsRollback我做了一些关于JPA和验证API(JSR-303)组合的测试。我在JPAspecifications中找到了以下内容(第101-102页):Bydefault,thedefaultBeanValidationgroup(thegroupDefault)willbevalidateduponthepre-persistandpre-updatelifecyclevalidationevents...IfthesetofConstraintViolationobjectsreturnedbythe

java - JPA DescriptorEventAdapter ChangeSet 始终为空

我正在尝试将更改跟踪器包含到我的JPA实体(到日志文件,而不是数据库),但是我的DescriptorEventAdapter返回的changeSet始终为空。我正在使用EclipseLink2.5.2、ojdbc6、spring-orm4.1.1。调用所有事件(包括preUpdateWithChanges)并将更改推送到数据库。我正在使用entityManager.merge(entity)来更新实体。HistoryEventListener.javapublicclassHistoryEventListenerextendsDescriptorEventAdapter{@Overri