我目前正在尝试使用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)
有什么想法为什么这种变化没有反映在数据库中? …
我目前正在开始将构建转换为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) 我正在使用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) 我们最近将我们的测试框架迁移到了 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)