- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是存储库
@Repository
public interface DocumentRepository extends JpaRepository<DocumentEntity, Long>, JpaSpecificationExecutor<DocumentEntity> {
List<DocumentEntity> findByDossier_Id(Long dossierId);
default List<DocumentEntity> findByCriteria(Long dossierId, DocumentParent parent, DocumentType type) {
return findAll((Specification<DocumentEntity>) (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
Root<DocumentEntity> rootDocumentEntity = criteriaBuilder.treat(root, DocumentEntity.class);
predicates.add(criteriaBuilder.equal(rootDocumentEntity.get("dossier_id"), dossierId));
if (parent == DocumentParent.COMMENT) {
predicates.add(criteriaBuilder.isNotNull(rootDocumentEntity.get("comment")));
} else if (parent == DocumentParent.DOSSIER) {
predicates.add(criteriaBuilder.isNull(rootDocumentEntity.get("comment")));
}
if (type != null) {
predicates.add(criteriaBuilder.equal(rootDocumentEntity.get("document_type"), type.name()));
}
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
});
}
}
这是父级:
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class DomainAudit implements Serializable {
private static final long serialVersionUID = -4248744229661473649L;
@CreatedDate
@Column(name = "created_date", nullable = false, updatable = false)
private LocalDateTime createdDate;
@LastModifiedDate
@Column(name = "updated_date", nullable = false)
private LocalDateTime updatedDate;
@CreatedBy
@Column(name = "created_by", nullable = false, updatable = false, length = 255)
private String createdBy;
@LastModifiedBy
@Column(name = "updated_by", nullable = false, length = 255)
private String updatedBy;
public LocalDateTime getCreatedDate() {
return createdDate;
}
public void setCreatedDate(LocalDateTime createdDate) {
this.createdDate = createdDate;
}
public LocalDateTime getUpdatedDate() {
return updatedDate;
}
public void setUpdatedDate(LocalDateTime updatedDate) {
this.updatedDate = updatedDate;
}
public String getCreatedBy() {
return createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
public String getUpdatedBy() {
return updatedBy;
}
public void setUpdatedBy(String updatedBy) {
this.updatedBy = updatedBy;
}
}
当我们将实体保存到数据库中时,此类会自动将这些列添加到实体中。因此,如果我们想对特定表启用此行为,我们只需扩展它即可。
@Entity
@Table(name = "document")
@Getter
@Setter
public class DocumentEntity extends DomainAudit implements Serializable {
private static final long serialVersionUID = 2917147851986086253L;
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
@ManyToOne
@JoinColumn(name = "dossier_id", foreignKey = @ForeignKey(name = "fk_document_dossier"))
private DossierEntity dossier;
@ManyToOne
@JoinColumn(name = "comment_id", foreignKey = @ForeignKey(name = "fk_document_comment"), nullable = true)
private CommentEntity comment;
@Column(name = "document_type", nullable = false)
@Enumerated(EnumType.STRING)
private DocumentType documentType;
@Column(name = "path", nullable = false)
private String path;
@Column(name = "original_file_name", nullable = false)
private String originalFileName;
}
我在 Stackoverflow 上尝试了多种解决方案但非似乎有效。它总是返回此错误消息:
org.springframework.dao.InvalidDataAccessApiUsageException: Unable to locate Attribute with the the given name [dossier_id] on this ManagedType [com.ubitec.sbs.support.DomainAudit]; nested exception is java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [dossier_id] on this ManagedType [com.ubitec.sbs.support.DomainAudit]
at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374)
at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:256)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:528)
at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:153)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy174.findAll(Unknown Source)
at com.ubitec.sbs.document.DocumentRepository.findByCriteria(DocumentRepository.java:24)
at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:86)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:353)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy174.findByCriteria(Unknown Source)
at com.ubitec.sbs.document.DocumentServiceTest.should_return_all_documents_of_an_existing_dossier(DocumentServiceTest.java:153)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.junit.rules.ExpectedException$ExpectedExceptionStatement.evaluate(ExpectedException.java:239)
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.lang.IllegalArgumentException: Unable to locate Attribute with the the given name [dossier_id] on this ManagedType [com.ubitec.sbs.support.DomainAudit]
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.checkNotNull(AbstractManagedType.java:147)
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:118)
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:116)
at org.hibernate.metamodel.model.domain.internal.AbstractManagedType.getAttribute(AbstractManagedType.java:43)
at org.hibernate.query.criteria.internal.path.AbstractFromImpl.locateAttributeInternal(AbstractFromImpl.java:111)
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.locateAttribute(AbstractPathImpl.java:204)
at org.hibernate.query.criteria.internal.path.AbstractPathImpl.get(AbstractPathImpl.java:177)
at com.ubitec.sbs.document.DocumentRepository.lambda$findByCriteria$83732f0e$1(DocumentRepository.java:27)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.applySpecificationToCriteria(SimpleJpaRepository.java:762)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:693)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.getQuery(SimpleJpaRepository.java:677)
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:433)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371)
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:353)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
... 57 more
如何更改它,以便 rootDocumentEntity.get("dossier_id")
真正引用 DocumentEntity
最佳答案
使用属性名称:“dossier”
。
"dossier_id"
是列名称(在数据库中)。对于标准 API,您需要使用属性名称(Java 中使用的属性名称)。
关于java - Spring Data JPA 规范继承 `criterialBuilder.treat` 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59005806/
在C中,我想运行linux命令。即, int status; status=system("lftp ftp://192.168.1.1 -e "mget -E /2015/Date*/*Snap/*
在我的内核模块中,我有以下读取函数: static ssize_t sample_read(struct file *filp, char *buffer, size_t length, loff_t
我目前正在开展一个学校项目,它需要一些 JPA。我并不是这方面的专家,所以我想我可以向你们寻求一些帮助。 它是 NetBeans IDE 中的一个 Maven 项目,更具体地说是一个 Java Web
我有一张从扫描仪扫描的图像。图像的某个区域故意不包含任何内容(所以只有白色)。图像的其余部分包含需要分析的数据。这个纯白色区域(称为“引用区域”)应用于确定分析代码应将什么值视为“白色”。来自扫描仪的
假设w之前没有被定义,下面的JS代码给出了ReferenceError: w is not defined: w?.y; 而这段代码只是返回undefined: let w; w?.y; 为什么 ?.
我正在尝试从 Unity 编辑器中配置我的项目,以将所有警告消息视为错误,但我似乎找不到任何与此相关的文档。有没有办法为我的项目配置它?非常感谢! 最佳答案 在 ProjectFolder/Asset
我的目标是在文本中找到一个词。需要注意的是,我需要将撇号视为文本。 让我用一个例子来解释。假设我要在文本中查找单词 don:don't trust don。我需要匹配 don 而不是 don't。 我
就上下文而言,我最近发现了函数式编程,并试图将其合并到现有的 Web API 解决方案中。 到目前为止,我一直在阅读Functional Programming in C#我一直在尝试创建一个新的 C
编译以下C模块 static const int i = 1; void f (const int *i); int g (void) { f (&i); return i; } 在 x86_
我正在使用 gson 将 java 对象序列化为 json。 Gson gson = new GsonBuilder().serializeNulls().create(); 此构建器可以很好地处理空
在 Delphi 2009 中,您在哪里打开将警告视为错误的选项? 最佳答案 我发布这篇文章后不久就找到了答案!可能对其他人有用。 导航至“项目 -> 选项 -> Delphi 编译器 -> 提示和警
我目前正在开发一个 Makefile 项目,由于我使用的是 boost,所以在编译过程中我收到了大量警告,因此我不能只在整个构建中启用 -Werror。但是,我有一组日志记录宏,可以有效地为我包装 p
我正在使用 SVG 文本路径为封闭路径周围的单词设置动画。如何让动画将路径视为一个圆圈,并让文本从路径的末尾平滑过渡到开头?现在它完成绘制文本(剪切溢出),直到文本消失,然后通过在开头弹出单词重新开始
在 Visual Studio 中有一个选项告诉编译器将警告视为错误,我如何使用 Qt Creator 设置它(我使用 VS2008 作为编译器)。 最佳答案 对于两种编译器(VS 和 MinGW)使
clap crate 为 -h 选项实现了内置行为,但它似乎没有为 -? 做同样的事情。有没有办法告诉它这样做? 最佳答案 我在 clap repository 上开了一个问题.作者/主要贡献者已在那
在我的 Visual C++ 代码中,我想要 /WX - “将警告视为错误”。这让我处理每个警告,包括 C4996 - “X was declared deprecated” 我不想解决 - 我现在不
我们已经开始了一个新项目,但现有项目也有这个问题。问题是,当我们用警告级别 4 编译时,我们也想打开 '将所有警告视为错误' 我们目前无法执行此操作,因为生成的文件(特别是 reference.cs
此代码在所有主流浏览器中是否安全? var string = '123' alert(string[1] == '2') // should alert true 最佳答案 不,这不安全。 Inter
我正在使用以下(高度简化的)MSBuild 脚本: 这对于转换单个配置文件非常有效,而无需通过 MSDeploy。 但是,假设在我的
我正在使用 WDK 的 Build 实用程序构建打印机驱动程序。我需要关闭“将警告视为错误”。它在 Visual Studio 项目文件中被关闭,但这显然不会影响 Build。 有谁知道如何做到这一点
我是一名优秀的程序员,十分优秀!