Spring data Cassandra converts the keyspace name and table names into lowercase












1















I'm trying to map existing Cassandra tables into java classes using spring data cassandra. The table names have uppercase letters, for example "MyTable". However, when I use @Table("MyTable"), spring data cassandra doesn't recognize the table because it treats the name as lowercase.



Is there any way to tell spring data cassandra to not convert the names into lowercase?



Sample code:



import org.springframework.data.cassandra.core.mapping.Table;

@Table("MyTable")
public class MyTable {

}









share|improve this question



























    1















    I'm trying to map existing Cassandra tables into java classes using spring data cassandra. The table names have uppercase letters, for example "MyTable". However, when I use @Table("MyTable"), spring data cassandra doesn't recognize the table because it treats the name as lowercase.



    Is there any way to tell spring data cassandra to not convert the names into lowercase?



    Sample code:



    import org.springframework.data.cassandra.core.mapping.Table;

    @Table("MyTable")
    public class MyTable {

    }









    share|improve this question

























      1












      1








      1








      I'm trying to map existing Cassandra tables into java classes using spring data cassandra. The table names have uppercase letters, for example "MyTable". However, when I use @Table("MyTable"), spring data cassandra doesn't recognize the table because it treats the name as lowercase.



      Is there any way to tell spring data cassandra to not convert the names into lowercase?



      Sample code:



      import org.springframework.data.cassandra.core.mapping.Table;

      @Table("MyTable")
      public class MyTable {

      }









      share|improve this question














      I'm trying to map existing Cassandra tables into java classes using spring data cassandra. The table names have uppercase letters, for example "MyTable". However, when I use @Table("MyTable"), spring data cassandra doesn't recognize the table because it treats the name as lowercase.



      Is there any way to tell spring data cassandra to not convert the names into lowercase?



      Sample code:



      import org.springframework.data.cassandra.core.mapping.Table;

      @Table("MyTable")
      public class MyTable {

      }






      cassandra datastax datastax-java-driver spring-data-cassandra






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Jan 18 at 14:06









      MAhmedMAhmed

      2317




      2317
























          2 Answers
          2






          active

          oldest

          votes


















          1














          In Cassandra's CQL, identifiers like keyspace, table, and column names are case insensitive. If you desire to use mixed case you must quote your names, i.e.:



          import org.springframework.data.cassandra.core.mapping.Table;

          @Table(""MyTable"")
          public class MyTable {

          }


          That being said, I would highly recommend not using mixed case identifiers. While it works, it creates a lot of complexity in having to worry about quoting everything. The convention I see most with Cassandra is to use all lower case use _ as a separator of words, i.e. my_table. You can still use MyTable as your class name to meet java conventions.






          share|improve this answer
























          • Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

            – MAhmed
            Jan 18 at 15:17











          • ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

            – Andy Tolbert
            Jan 19 at 2:37



















          1














          I was able to solve the problem by adding (forceQuote = true) to @Table annotation.



          @Table(value = "MyTable", forceQuote = true)
          public class MyTable {

          }





          share|improve this answer

























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54255648%2fspring-data-cassandra-converts-the-keyspace-name-and-table-names-into-lowercase%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            In Cassandra's CQL, identifiers like keyspace, table, and column names are case insensitive. If you desire to use mixed case you must quote your names, i.e.:



            import org.springframework.data.cassandra.core.mapping.Table;

            @Table(""MyTable"")
            public class MyTable {

            }


            That being said, I would highly recommend not using mixed case identifiers. While it works, it creates a lot of complexity in having to worry about quoting everything. The convention I see most with Cassandra is to use all lower case use _ as a separator of words, i.e. my_table. You can still use MyTable as your class name to meet java conventions.






            share|improve this answer
























            • Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

              – MAhmed
              Jan 18 at 15:17











            • ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

              – Andy Tolbert
              Jan 19 at 2:37
















            1














            In Cassandra's CQL, identifiers like keyspace, table, and column names are case insensitive. If you desire to use mixed case you must quote your names, i.e.:



            import org.springframework.data.cassandra.core.mapping.Table;

            @Table(""MyTable"")
            public class MyTable {

            }


            That being said, I would highly recommend not using mixed case identifiers. While it works, it creates a lot of complexity in having to worry about quoting everything. The convention I see most with Cassandra is to use all lower case use _ as a separator of words, i.e. my_table. You can still use MyTable as your class name to meet java conventions.






            share|improve this answer
























            • Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

              – MAhmed
              Jan 18 at 15:17











            • ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

              – Andy Tolbert
              Jan 19 at 2:37














            1












            1








            1







            In Cassandra's CQL, identifiers like keyspace, table, and column names are case insensitive. If you desire to use mixed case you must quote your names, i.e.:



            import org.springframework.data.cassandra.core.mapping.Table;

            @Table(""MyTable"")
            public class MyTable {

            }


            That being said, I would highly recommend not using mixed case identifiers. While it works, it creates a lot of complexity in having to worry about quoting everything. The convention I see most with Cassandra is to use all lower case use _ as a separator of words, i.e. my_table. You can still use MyTable as your class name to meet java conventions.






            share|improve this answer













            In Cassandra's CQL, identifiers like keyspace, table, and column names are case insensitive. If you desire to use mixed case you must quote your names, i.e.:



            import org.springframework.data.cassandra.core.mapping.Table;

            @Table(""MyTable"")
            public class MyTable {

            }


            That being said, I would highly recommend not using mixed case identifiers. While it works, it creates a lot of complexity in having to worry about quoting everything. The convention I see most with Cassandra is to use all lower case use _ as a separator of words, i.e. my_table. You can still use MyTable as your class name to meet java conventions.







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Jan 18 at 15:02









            Andy TolbertAndy Tolbert

            9,54012035




            9,54012035













            • Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

              – MAhmed
              Jan 18 at 15:17











            • ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

              – Andy Tolbert
              Jan 19 at 2:37



















            • Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

              – MAhmed
              Jan 18 at 15:17











            • ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

              – Andy Tolbert
              Jan 19 at 2:37

















            Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

            – MAhmed
            Jan 18 at 15:17





            Unfortunately, this didn't work. The following exception is thrown: java.lang.IllegalArgumentException: given string ["MyTable"] is not a valid quoted or unquoted identifier

            – MAhmed
            Jan 18 at 15:17













            ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

            – Andy Tolbert
            Jan 19 at 2:37





            ah, I didn't realize at the time that there was a separate option for this, glad you figured it out!

            – Andy Tolbert
            Jan 19 at 2:37













            1














            I was able to solve the problem by adding (forceQuote = true) to @Table annotation.



            @Table(value = "MyTable", forceQuote = true)
            public class MyTable {

            }





            share|improve this answer






























              1














              I was able to solve the problem by adding (forceQuote = true) to @Table annotation.



              @Table(value = "MyTable", forceQuote = true)
              public class MyTable {

              }





              share|improve this answer




























                1












                1








                1







                I was able to solve the problem by adding (forceQuote = true) to @Table annotation.



                @Table(value = "MyTable", forceQuote = true)
                public class MyTable {

                }





                share|improve this answer















                I was able to solve the problem by adding (forceQuote = true) to @Table annotation.



                @Table(value = "MyTable", forceQuote = true)
                public class MyTable {

                }






                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited 2 days ago

























                answered Jan 18 at 17:24









                MAhmedMAhmed

                2317




                2317






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54255648%2fspring-data-cassandra-converts-the-keyspace-name-and-table-names-into-lowercase%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Liquibase includeAll doesn't find base path

                    How to use setInterval in EJS file?

                    Petrus Granier-Deferre