我正在使用Spring Data的审计功能,并且有一个类似于这样的类:
@Entity
@Audited
@EntityListeners(AuditingEntityListener.class)
@Table(name="Student")
public class Student {
@Id
@GeneratedValue (strategy = GenerationType.AUTO)
private Long id;
@CreatedBy
private String createdBy;
@CreatedDate
private Date createdDate;
@LastModifiedBy
private String lastModifiedBy;
@LastModifiedDate
private Date lastModifiedDate;
...
现在,我相信我已经配置了审计,因为我可以看到在更新域对象时createdBy,createdDate,lastModifiedBy和lastModifiedDate都获得了正确的值.
但是,我的问题是,当我更新对象时,我将丢失createdBy和createdDate的值.所以,当我第一次创建对象时,我有四个值,但是当我更新它时,createdBy和createdDate都无效!我还使用Hibernate envers来保存域对象的历史记录.
你知道为什么我会这样做吗?当我更新域对象时,为什么createdBy和createdDate为空?
更新:回答@m-deinum的问题:是的,春天数据JPA配置正确 - 其他一切正常 - 我真的不想发布配置,因为你的udnerstand它需要很大的空间.
我的AuditorAwareImpl是这样的
@Component
public class AuditorAwareImpl implements AuditorAware {
Logger logger = Logger.getLogger(AuditorAwareImpl.class);
@Autowired
ProfileService profileService;
@Override
public String getCurrentAuditor() {
return profileService.getMyUsername();
}
}
最后,这是我的更新控制器实现:
@Autowired
private StudentFormValidator validator;
@Autowired
private … 给定一个要作为JAR发布的Gradle Web项目(以便它可以是另一个具有不同发布周期的Gradle Web项目的依赖项).
该maven-publish插件用于:
apply plugin: 'war'
apply plugin: 'maven'
apply plugin: 'maven-publish'
Run Code Online (Sandbox Code Playgroud)
Web项目具有providedCompile依赖性:
providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
Run Code Online (Sandbox Code Playgroud)
'jar'使用mavenJava以下方式发布:
publishing {
publications {
// mavenJava publishes a jar file
mavenJava(MavenPublication) {
from components.java
}
}
repositories {
mavenLocal()
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在结果Maven POM 中javax.servlet-api有一个runtime范围:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>runtime</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
运行时范围对servlet-api毫无意义,甚至是有害的.如何provided在pom.xml中设置范围?
我创建了一个存储过程,它返回结果行和两个输出参数。我无法找到任何春从事情,我可以得到ResultSet和outPutParameters。我想实现像
这样使用Spring框架。
spring resultset jdbctemplate output-parameter java-stored-procedures
JUnit 5 如何允许检查嵌套异常?我正在寻找类似于在 JUnit 4 中借助 a 可以完成的操作@org.junit.Rule,如以下代码片段所示:
class MyTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
@Test
public void checkForNestedException() {
// a JPA exception will be thrown, with a nested LazyInitializationException
expectedException.expectCause(isA(LazyInitializationException.class));
Sample s = sampleRepository.findOne(id);
// not touching results triggers exception
sampleRepository.delete(s);
}
}
Run Code Online (Sandbox Code Playgroud)
根据评论编辑:
Assertions.assertThrows(LazyInitializationException.class)在 JUnit 5 中不起作用,因为LazyInitializationException是 的嵌套异常(原因)JpaSystemException。
只能检查外部异常,这不能按预期工作:
// assertThrows does not allow checking for nested LazyInitializationException
Assertions.assertThrows(JpaSystemException.class, () -> {
Sample s = sampleRepository.getOne(id);
// not …Run Code Online (Sandbox Code Playgroud) 使用<blockquote>元素比使用<div>?有什么好处?我正在寻找一个网站的标记来学习CSS,我无法弄清楚为什么<blockquote>使用它.
编辑:是的抱歉,我没有澄清,它用于保存<div>标签与用户名作为文本和输入标签.显然没有引用.
基本上遍历列表和
- 第一个对象上的Invoke方法
- 捕获第一个异常(如果有的话); 如果没有更多的例外可以捕获,请正常返回.否则,继续调用方法,直到捕获到所有异常.
- 转到下一个对象.
我可以迭代每个对象,调用方法,并捕获一个异常,但我不知道如何不断调用它上面的方法并继续捕获异常.