1717
1818import java .util .Collection ;
1919
20+ import com .datastax .driver .core .ResultSet ;
2021import com .google .common .collect .Lists ;
2122import org .testng .annotations .Test ;
2223
2829public class MapperAccessorParamsTest extends CCMBridge .PerClassSingleNodeCluster {
2930 @ Override
3031 protected Collection <String > getTableDefinitions () {
31- return Lists .newArrayList ("CREATE TABLE user ( key int primary key, gender int)" ,
32- "CREATE INDEX on user(gender)" );
33-
32+ return Lists .newArrayList (
33+ "CREATE TABLE user ( key int primary key, gender int)" ,
34+ "CREATE INDEX on user(gender)" ,
35+ "CREATE TABLE user_str ( key int primary key, gender text)" ,
36+ "CREATE INDEX on user_str(gender)" );
3437 }
3538
3639 @ Test (groups = "short" )
37- void should_include_enumtype_in_accessor () {
38- Mapper <User > userMapper = new MappingManager (session ).mapper (User .class );
39- userMapper .save (new User (1 , 0 ));
40- userMapper .save (new User (2 , 1 ));
41-
40+ void should_include_enumtype_in_accessor_ordinal () {
4241 UserAccessor accessor = new MappingManager (session )
43- .createAccessor (UserAccessor .class );
44- assertThat (accessor .getUser (Enum .MALE ).one ().getGender ()).isEqualTo (0 );
42+ .createAccessor (UserAccessor .class );
43+
44+ accessor .addUser (0 , Enum .FEMALE );
45+ accessor .addUser (1 , Enum .MALE );
46+
47+ assertThat (accessor .getUser (Enum .MALE ).one ().getGender ()).isEqualTo (Enum .MALE );
4548 assertThat (accessor .getUser (Enum .MALE ).one ().getKey ()).isEqualTo (1 );
4649
50+ assertThat (accessor .getUser (Enum .FEMALE ).one ().getGender ()).isEqualTo (Enum .FEMALE );
51+ assertThat (accessor .getUser (Enum .FEMALE ).one ().getKey ()).isEqualTo (0 );
52+ }
53+
54+ @ Test (groups = "short" )
55+ void should_include_enumtype_in_accessor_string () {
56+ UserAccessor accessor = new MappingManager (session )
57+ .createAccessor (UserAccessor .class );
58+
59+ accessor .addUserStr (0 , Enum .FEMALE );
60+ accessor .addUserStr (1 , Enum .MALE );
61+
62+ assertThat (accessor .getUserStr (Enum .MALE ).one ().getGender ()).isEqualTo (Enum .MALE );
63+ assertThat (accessor .getUserStr (Enum .MALE ).one ().getKey ()).isEqualTo (1 );
64+
65+ assertThat (accessor .getUserStr (Enum .FEMALE ).one ().getGender ()).isEqualTo (Enum .FEMALE );
66+ assertThat (accessor .getUserStr (Enum .FEMALE ).one ().getKey ()).isEqualTo (0 );
4767 }
4868
4969 enum Enum {
@@ -52,21 +72,63 @@ enum Enum {
5272
5373 @ Accessor
5474 public interface UserAccessor {
55- @ Query ("select * from user where gender=:val" )
56- Result <User > getUser (@ Param ("val" ) @ Enumerated (EnumType .ORDINAL ) Enum value );
75+ @ Query ("select * from user where gender=?" )
76+ Result <User > getUser (@ Enumerated (EnumType .ORDINAL ) Enum value );
77+
78+ @ Query ("select * from user_str where gender=?" )
79+ Result <UserStr > getUserStr (@ Enumerated (EnumType .STRING ) Enum value );
80+
81+ @ Query ("insert into user (key, gender) values (?,?)" )
82+ ResultSet addUser (int key , @ Enumerated (EnumType .ORDINAL ) Enum value );
83+
84+ @ Query ("insert into user_str (key, gender) values (?,?)" )
85+ ResultSet addUserStr (int key , @ Enumerated (EnumType .STRING ) Enum value );
5786 }
5887
5988 @ Table (name = "user" )
6089 public static class User {
6190 @ PartitionKey
6291 private int key ;
6392
64- private int gender ;
93+ @ Enumerated (EnumType .ORDINAL )
94+ private Enum gender ;
6595
6696 public User () {
6797 }
6898
69- public User (int k , int val ) {
99+ public User (int k , Enum val ) {
100+ this .key = k ;
101+ this .gender = val ;
102+ }
103+
104+ public int getKey () {
105+ return this .key ;
106+ }
107+
108+ public void setKey (int pk ) {
109+ this .key = pk ;
110+ }
111+
112+ public Enum getGender () {
113+ return this .gender ;
114+ }
115+
116+ public void setGender (Enum val ) {
117+ this .gender = val ;
118+ }
119+ }
120+
121+ @ Table (name = "user" )
122+ public static class UserStr {
123+ @ PartitionKey
124+ private int key ;
125+
126+ private Enum gender ;
127+
128+ public UserStr () {
129+ }
130+
131+ public UserStr (int k , Enum val ) {
70132 this .key = k ;
71133 this .gender = val ;
72134 }
@@ -79,11 +141,11 @@ public void setKey(int pk) {
79141 this .key = pk ;
80142 }
81143
82- public int getGender () {
144+ public Enum getGender () {
83145 return this .gender ;
84146 }
85147
86- public void setGender (int val ) {
148+ public void setGender (Enum val ) {
87149 this .gender = val ;
88150 }
89151 }
0 commit comments