22
33import io .hypersistence .utils .hibernate .type .model .BaseEntity ;
44import io .hypersistence .utils .hibernate .util .AbstractPostgreSQLIntegrationTest ;
5- import jakarta .persistence .*;
5+ import jakarta .persistence .Cacheable ;
6+ import jakarta .persistence .Column ;
7+ import jakarta .persistence .Entity ;
8+ import jakarta .persistence .Table ;
9+ import jakarta .persistence .Tuple ;
610import org .hibernate .annotations .CacheConcurrencyStrategy ;
711import org .hibernate .annotations .Parameter ;
812import org .hibernate .annotations .Type ;
913import org .junit .Test ;
1014
11- import javax .sql .DataSource ;
12- import java .sql .Connection ;
13- import java .sql .SQLException ;
14- import java .sql .Statement ;
1515import java .time .LocalDate ;
1616import java .time .ZoneId ;
17- import java .util .*;
17+ import java .util .Arrays ;
18+ import java .util .Collections ;
19+ import java .util .Date ;
20+ import java .util .List ;
21+ import java .util .Properties ;
22+ import java .util .UUID ;
1823
19- import static org .junit .Assert .*;
24+ import static org .junit .Assert .assertArrayEquals ;
25+ import static org .junit .Assert .assertEquals ;
2026
2127/**
2228 * @author Vlad Mihalcea
29+ * @author Baptiste Masoud
2330 */
2431public class EhcacheListArrayTypeTest extends AbstractPostgreSQLIntegrationTest {
2532
2633 @ Override
2734 protected Class <?>[] entities () {
2835 return new Class <?>[]{
29- Event .class ,
36+ Event .class ,
3037 };
3138 }
3239
@@ -59,6 +66,7 @@ public void test() {
5966 event .setSensorIds (Arrays .asList (UUID .fromString ("c65a3bcb-8b36-46d4-bddb-ae96ad016eb1" ), UUID .fromString ("72e95717-5294-4c15-aa64-a3631cf9a800" )));
6067 event .setSensorNames (Arrays .asList ("Temperature" , "Pressure" ));
6168 event .setSensorValues (Arrays .asList (12 , 756 ));
69+ event .setSensorShortValues (Arrays .asList ((short ) 42 , (short ) 69 ));
6270 event .setSensorLongValues (Arrays .asList (42L , 9223372036854775800L ));
6371 event .setSensorStates (Arrays .asList (SensorState .ONLINE , SensorState .OFFLINE , SensorState .ONLINE , SensorState .UNKNOWN ));
6472 event .setDateValues (Arrays .asList (date1 , date2 ));
@@ -72,6 +80,7 @@ public void test() {
7280 assertArrayEquals (new UUID []{UUID .fromString ("c65a3bcb-8b36-46d4-bddb-ae96ad016eb1" ), UUID .fromString ("72e95717-5294-4c15-aa64-a3631cf9a800" )}, event .getSensorIds ().toArray ());
7381 assertArrayEquals (new String []{"Temperature" , "Pressure" }, event .getSensorNames ().toArray ());
7482 assertArrayEquals (new Integer []{12 , 756 }, event .getSensorValues ().toArray ());
83+ assertArrayEquals (new Short []{42 , 69 }, event .getSensorShortValues ().toArray ());
7584 assertArrayEquals (new Long []{42L , 9223372036854775800L }, event .getSensorLongValues ().toArray ());
7685 assertArrayEquals (new SensorState []{SensorState .ONLINE , SensorState .OFFLINE , SensorState .ONLINE , SensorState .UNKNOWN }, event .getSensorStates ().toArray ());
7786 assertArrayEquals (new Date []{date1 , date2 }, event .getDateValues ().toArray ());
@@ -80,19 +89,19 @@ public void test() {
8089
8190 doInJPA (entityManager -> {
8291 List <Tuple > events = entityManager .createNativeQuery (
83- "select " +
84- " id, " +
85- " sensor_ids, " +
86- " sensor_names, " +
87- " sensor_values " +
88- "from event " +
89- "where id >= :id" , Tuple .class )
90- .setParameter ("id" , 0 )
91- .unwrap (org .hibernate .query .NativeQuery .class )
92- .addScalar ("sensor_ids" , UUID [].class )
93- .addScalar ("sensor_names" , String [].class )
94- .addScalar ("sensor_values" , int [].class )
95- .getResultList ();
92+ "select " +
93+ " id, " +
94+ " sensor_ids, " +
95+ " sensor_names, " +
96+ " sensor_values " +
97+ "from event " +
98+ "where id >= :id" , Tuple .class )
99+ .setParameter ("id" , 0 )
100+ .unwrap (org .hibernate .query .NativeQuery .class )
101+ .addScalar ("sensor_ids" , UUID [].class )
102+ .addScalar ("sensor_names" , String [].class )
103+ .addScalar ("sensor_values" , int [].class )
104+ .getResultList ();
96105
97106 assertEquals (2 , events .size ());
98107 });
@@ -113,6 +122,7 @@ public void testMixingNullValues() {
113122 event .setSensorIds (Arrays .asList (null , UUID .fromString ("72e95717-5294-4c15-aa64-a3631cf9a800" )));
114123 event .setSensorNames (Arrays .asList ("Temperature" , null ));
115124 event .setSensorValues (Arrays .asList (null , 756 ));
125+ event .setSensorShortValues (Arrays .asList (null , (short ) 69 ));
116126 event .setSensorLongValues (Arrays .asList (null , 9223372036854775800L ));
117127 event .setSensorStates (Arrays .asList (null , SensorState .OFFLINE , SensorState .ONLINE , null ));
118128 event .setDateValues (Arrays .asList (null , date ));
@@ -126,16 +136,17 @@ public void testMixingNullValues() {
126136 assertArrayEquals (new UUID []{null , UUID .fromString ("72e95717-5294-4c15-aa64-a3631cf9a800" )}, event .getSensorIds ().toArray ());
127137 assertArrayEquals (new String []{"Temperature" , null }, event .getSensorNames ().toArray ());
128138 assertArrayEquals (new Integer []{null , 756 }, event .getSensorValues ().toArray ());
139+ assertArrayEquals (new Short []{null , 69 }, event .getSensorShortValues ().toArray ());
129140 assertArrayEquals (new Long []{null , 9223372036854775800L }, event .getSensorLongValues ().toArray ());
130141 assertArrayEquals (new SensorState []{null , SensorState .OFFLINE , SensorState .ONLINE , null }, event .getSensorStates ().toArray ());
131142 assertArrayEquals (new Date []{null , date }, event .getDateValues ().toArray ());
132143 assertArrayEquals (new Date []{null , date }, event .getTimestampValues ().toArray ());
133144 });
134145 }
135-
146+
136147 @ Test
137148 public void testNullValues () {
138-
149+
139150 doInJPA (entityManager -> {
140151 Event nullEvent = new Event ();
141152 nullEvent .setId (0L );
@@ -146,6 +157,7 @@ public void testNullValues() {
146157 event .setSensorIds (Arrays .asList (null , null ));
147158 event .setSensorNames (Arrays .asList (null , null ));
148159 event .setSensorValues (Arrays .asList (null , null ));
160+ event .setSensorShortValues (Arrays .asList (null , null ));
149161 event .setSensorLongValues (Arrays .asList (null , null ));
150162 event .setSensorStates (Arrays .asList (null , null ));
151163 event .setDateValues (Arrays .asList (null , null ));
@@ -159,6 +171,7 @@ public void testNullValues() {
159171 assertArrayEquals (new UUID []{null , null }, event .getSensorIds ().toArray ());
160172 assertArrayEquals (new String []{null , null }, event .getSensorNames ().toArray ());
161173 assertArrayEquals (new Integer []{null , null }, event .getSensorValues ().toArray ());
174+ assertArrayEquals (new Short []{null , null }, event .getSensorShortValues ().toArray ());
162175 assertArrayEquals (new Long []{null , null }, event .getSensorLongValues ().toArray ());
163176 assertArrayEquals (new SensorState []{null , null }, event .getSensorStates ().toArray ());
164177 assertArrayEquals (new Date []{null , null }, event .getDateValues ().toArray ());
@@ -179,6 +192,7 @@ public void testEmptyArrays() {
179192 event .setSensorIds (Collections .emptyList ());
180193 event .setSensorNames (Collections .emptyList ());
181194 event .setSensorValues (Collections .emptyList ());
195+ event .setSensorShortValues (Collections .emptyList ());
182196 event .setSensorLongValues (Collections .emptyList ());
183197 event .setSensorStates (Collections .emptyList ());
184198 event .setDateValues (Collections .emptyList ());
@@ -192,6 +206,7 @@ public void testEmptyArrays() {
192206 assertArrayEquals (new UUID []{}, event .getSensorIds ().toArray ());
193207 assertArrayEquals (new String []{}, event .getSensorNames ().toArray ());
194208 assertArrayEquals (new Integer []{}, event .getSensorValues ().toArray ());
209+ assertArrayEquals (new Short []{}, event .getSensorShortValues ().toArray ());
195210 assertArrayEquals (new Long []{}, event .getSensorLongValues ().toArray ());
196211 assertArrayEquals (new SensorState []{}, event .getSensorStates ().toArray ());
197212 assertArrayEquals (new Date []{}, event .getDateValues ().toArray ());
@@ -217,6 +232,8 @@ public void testNullArrays() {
217232
218233 assertEquals (null , event .getSensorIds ());
219234 assertEquals (null , event .getSensorNames ());
235+ assertEquals (null , event .getSensorValues ());
236+ assertEquals (null , event .getSensorShortValues ());
220237 assertEquals (null , event .getSensorLongValues ());
221238 assertEquals (null , event .getSensorStates ());
222239 assertEquals (null , event .getDateValues ());
@@ -241,13 +258,17 @@ public static class Event extends BaseEntity {
241258 @ Column (name = "sensor_values" , columnDefinition = "integer[]" )
242259 private List <Integer > sensorValues ;
243260
261+ @ Type (ListArrayType .class )
262+ @ Column (name = "sensor_short_values" , columnDefinition = "smallint[]" )
263+ private List <Short > sensorShortValues ;
264+
244265 @ Type (ListArrayType .class )
245266 @ Column (name = "sensor_long_values" , columnDefinition = "bigint[]" )
246267 private List <Long > sensorLongValues ;
247268
248269 @ Type (
249- value = ListArrayType .class ,
250- parameters = @ Parameter (name = ListArrayType .SQL_ARRAY_TYPE , value = "sensor_state" )
270+ value = ListArrayType .class ,
271+ parameters = @ Parameter (name = ListArrayType .SQL_ARRAY_TYPE , value = "sensor_state" )
251272 )
252273 @ Column (name = "sensor_states" , columnDefinition = "sensor_state[]" )
253274 private List <SensorState > sensorStates ;
@@ -284,6 +305,14 @@ public void setSensorValues(List<Integer> sensorValues) {
284305 this .sensorValues = sensorValues ;
285306 }
286307
308+ public List <Short > getSensorShortValues () {
309+ return sensorShortValues ;
310+ }
311+
312+ public void setSensorShortValues (List <Short > sensorShortValues ) {
313+ this .sensorShortValues = sensorShortValues ;
314+ }
315+
287316 public List <Long > getSensorLongValues () {
288317 return sensorLongValues ;
289318 }
@@ -320,4 +349,4 @@ public void setTimestampValues(List<Date> timestampValues) {
320349 public enum SensorState {
321350 ONLINE , OFFLINE , UNKNOWN ;
322351 }
323- }
352+ }
0 commit comments