Skip to content

Commit a7c8dfa

Browse files
committed
[#2873] Test flush before running a native query
And test native queries without entities.
1 parent 5fca46d commit a7c8dfa

File tree

1 file changed

+71
-0
lines changed

1 file changed

+71
-0
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
/*
2+
* SPDX-License-Identifier: Apache-2.0
3+
* Copyright Red Hat Inc. and Hibernate Authors
4+
*/
5+
package org.hibernate.reactive;
6+
7+
import org.hibernate.FlushMode;
8+
9+
import org.junit.jupiter.api.Test;
10+
11+
import io.vertx.junit5.VertxTestContext;
12+
13+
import static org.assertj.core.api.Assertions.assertThat;
14+
import static org.hibernate.reactive.containers.DatabaseConfiguration.DBType.DB2;
15+
import static org.hibernate.reactive.containers.DatabaseConfiguration.dbType;
16+
17+
public class NoEntitiesTest extends BaseReactiveTest {
18+
19+
@Test
20+
public void emptyMetamodelWithMutiny() {
21+
assertThat( getMutinySessionFactory().getMetamodel().getEntities() ).isEmpty();
22+
}
23+
24+
@Test
25+
public void shouldBeAbleToRunQueryWithMutinyTransaction(VertxTestContext context) {
26+
test( context, getMutinySessionFactory()
27+
.withTransaction( s -> s
28+
.createNativeQuery( selectQuery( 42 ), Long.class ).getSingleResult()
29+
).invoke( result -> assertThat( result ).isEqualTo( 42L ) )
30+
);
31+
}
32+
33+
@Test
34+
public void runNativeQueryWithMutinyTransactionAndFlush(VertxTestContext context) {
35+
test( context, getMutinySessionFactory()
36+
.withTransaction( s -> {
37+
s.setFlushMode( FlushMode.ALWAYS );
38+
return s
39+
.createNativeQuery( selectQuery( 42 ), Long.class ).getSingleResult()
40+
.call( s::flush );
41+
} ).invoke( result -> assertThat( result ).isEqualTo( 42L ) )
42+
);
43+
}
44+
45+
private static String selectQuery(int value) {
46+
return dbType() == DB2
47+
? "values " + value
48+
: "select " + value;
49+
}
50+
51+
@Test
52+
public void runStatelessNativeQueryWithMutinyTransactionAndFlush(VertxTestContext context) {
53+
test(
54+
context, getMutinySessionFactory()
55+
.withStatelessTransaction( s -> s
56+
.createNativeQuery( selectQuery( 42 ), Long.class )
57+
.getSingleResult()
58+
)
59+
.invoke( result -> assertThat( result ).isEqualTo( 42L ) )
60+
);
61+
}
62+
63+
@Test
64+
public void shouldBeAbleToRunQueryWithMutinyWithoutTransaction(VertxTestContext context) {
65+
test( context, getMutinySessionFactory()
66+
.openSession().chain( s -> s
67+
.createNativeQuery( selectQuery( 666 ), Long.class ).getSingleResult()
68+
).invoke( result -> assertThat( result ).isEqualTo( 666L ) )
69+
);
70+
}
71+
}

0 commit comments

Comments
 (0)