小编Mar*_*idt的帖子

Spring JPA Auditing empty createdBy

我正在使用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 …

java spring auditing spring-data

3
推荐指数
2
解决办法
1万
查看次数

如何使用提供的范围maven发布Gradle项目JAR

给定一个要作为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中设置范围?

pom.xml maven gradle-2

2
推荐指数
1
解决办法
2157
查看次数

带有 ResultSet 和 OutPut 参数的 Spring JDBCTemplate 存储过程

我创建了一个存储过程,它返回结果行和两个输出参数。我无法找到任何春从事情,我可以得到ResultSetoutPutParameters。我想实现像 这样使用Spring框架。

spring resultset jdbctemplate output-parameter java-stored-procedures

2
推荐指数
1
解决办法
2万
查看次数

Junit5:预期嵌套异常

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)

nested-exceptions junit5

2
推荐指数
1
解决办法
1686
查看次数

blockquote vs div

使用<blockquote>元素比使用<div>?有什么好处?我正在寻找一个网站的标记来学习CSS,我无法弄清楚为什么<blockquote>使用它.

编辑:是的抱歉,我没有澄清,它用于保存<div>标签与用户名作为文本和输入标签.显然没有引用.

html css

1
推荐指数
2
解决办法
3310
查看次数

如何创建一个try-catch块继续调用对象上的方法,直到没有更多的异常要捕获

基本上遍历列表和
- 第一个对象上的Invoke方法
- 捕获第一个异常(如果有的话); 如果没有更多的例外可以捕获,请正常返回.否则,继续调用方法,直到捕获到所有异常.
- 转到下一个对象.

我可以迭代每个对象,调用方法,并捕获一个异常,但我不知道如何不断调用它上面的方法并继续捕获异常.

java loops try-catch try-catch-finally

1
推荐指数
1
解决办法
3593
查看次数