小编Nit*_*tek的帖子

Spring Data Repository不会删除ManyToOne Entity

我目前正在尝试使用Spring Data存储库来删除我的一些实体.删除调用在没有任何异常/错误消息的情况下工作,但之后不会删除该实体.

这些是我的实体:

public class Board implements Serializable {

    @Id
    @GeneratedValue(generator = "uuid2")
    @GenericGenerator(name = "uuid2", strategy = "uuid2")
    @Column(columnDefinition = "BINARY(16)")
    private UUID uuid;

    @OneToMany(fetch=FetchType.EAGER, cascade=CascadeType.ALL, orphanRemoval = true, mappedBy = "board")
    private List<Post> posts = new ArrayList<Post>();
}
Run Code Online (Sandbox Code Playgroud)

public class Post implements Serializable {

    @Id
    @GeneratedValue
    private long id;

    @ManyToOne(optional = false)
    @JoinColumn(name="board_uuid", updatable = false, nullable = false)
    @JsonBackReference
    private Board board;
}
Run Code Online (Sandbox Code Playgroud)

存储库尽可能简单:

@Repository
public interface PostRepository extends CrudRepository<Post, Long> {
}
Run Code Online (Sandbox Code Playgroud)

删除调用类似于

postRepository.delete(50);
Run Code Online (Sandbox Code Playgroud)

有什么想法为什么这种变化没有反映在数据库中? …

java spring hibernate spring-data-jpa

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

让Jenkins管道等到服务器启动

我目前正在开始将构建转换为Jenkins构建管道.在某个时刻,我们有必要等待在docker容器中启动Web应用程序.

我的想法是使用这样的东西:

timeout(120) {
    waitUntil {
        sh 'wget -q http://server:8080/app/welcome.jsf -O /dev/null'
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这使得管道构建失败:

错误:脚本返回退出代码4

有没有简单的方法来完成这项工作?

编辑:

我设法使用以下代码使其工作,但阶段仍然标记为失败(尽管构建继续并最终标记为绿色).

timeout(120) {
    waitUntil {
        try {
            sh 'wget -q http://server:8080/app/welcome.jsf -O /dev/null'
            return true
        } catch (exception) {
            return false
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

groovy jenkins jenkins-pipeline

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

在休眠之前运行SpringLiquibase

我正在使用SpringLiquibase在应用程序启动期间自动应用我的liquibase更新.一般来说这很好用,但是当我将hibernate.hbm2ddl.auto设置为"validate"时,在liquibase似乎有机会应用更新之前,hibernate开始抱怨数据库方案.我的配置如下所示:

@Configuration
@EnableTransactionManagement
@ComponentScan(basePackages = "com.myapp")
@PropertySource(value = {"classpath:myapp.properties"})
@EnableJpaRepositories("com.myapp")
public class MyappConfig {

    @Resource
    private Environment env;

    @Bean
    public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();

        dataSource.setDriverClassName(env.getRequiredProperty("jdbc.driver"));
        dataSource.setUrl(env.getRequiredProperty("jdbc.url"));
        dataSource.setUsername(env.getRequiredProperty("jdbc.username"));
        dataSource.setPassword(env.getRequiredProperty("jdbc.password"));

        return dataSource;
    }

    @Bean
    public SpringLiquibase liquibase() {
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setDataSource(dataSource());
        liquibase.setChangeLog("classpath:liquibase/liquibase-master-changelog.xml");
        return liquibase;
    }

    @Bean
    public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
        LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean();
        entityManagerFactoryBean.setDataSource(dataSource());
        entityManagerFactoryBean.setPersistenceProviderClass(HibernatePersistenceProvider.class);
        entityManagerFactoryBean.setPackagesToScan("com.myapp");

        entityManagerFactoryBean.setJpaProperties(hibernateProperties());

        return entityManagerFactoryBean;
    }

    private Properties hibernateProperties() {
        Properties properties = new Properties();

        String[] propertyNames = new …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate liquibase

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

在不创建上下文的情况下禁用 Spring 和 Junit5 测试

我们最近将我们的测试框架迁移到了 JUnit5,并且在使用@Disabled(und ExecutionConditions) 的测试中遇到了一些问题@SpringJUnitConfig:在 Junit4 中@Ignore,毫无疑问地禁用了测试执行,并且没有执行任何操作。使用 Junit5 和@Disabled,系统现在意识到不应执行测试之前创建 spring 上下文。在我们的例子中,这会导致禁用测试失败,因为其中一些被禁用,因为在某些情况下无法创建上下文。

是否可以以不为此测试创建 spring 上下文的方式禁用 JUnit5 中的测试(类)?

最小的例子:

@TestInstance(Lifecycle.PER_CLASS)
@RunWith(JUnitPlatform.class) // To support tests running in eclipse 
@SpringJUnitConfig(classes = {BaseTestSpringTest.TestConfiguration.class})
@Disabled
public class BaseTestSpringTest {

    @Configuration
    @ComponentScan(basePackages = { "my.package" })
    public class TestConfiguration {
    }

    @Component
    public class TestClass {
        @PostConstruct
        public void fail() {
            throw new IllegalStateException();
        }
    }

    @Autowired
    protected TestClass test;

    @Test
    public void test() …
Run Code Online (Sandbox Code Playgroud)

spring junit5

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