How to use the discriminator of single table inheritance in a unicity constraint?Single Table Inheritance in DjangoRails Single Table InheritanceHibernate, single table inheritance and using field from superclass as discriminator columnSingle Table Inheritance or Class Table Inheritance?Single Table Inheritance QueryCan I remove the discriminator column in a Hibernate single table inheritance?Can a single table inheritance entity extend a class table inheritance entity?JPA Query for collection map join tablePostgreSQL table inheritance and constraintsOneToMany Relationship with 3 entity class using JPA and spring boot

Can you feel passing through the sound barrier in an F-16?

Why did this happen to Thanos's ships at the end of "Avengers: Endgame"?

Does the benefit of the Flames of Phlegethos feat that allows rerolls of fire damage affect its final benefit?

Why doesn't the Falcon-9 first stage use three legs to land?

(Why) May a Beit Din refuse to bury a body in order to coerce a man into giving a divorce?

Were there 486SX revisions without an FPU on the die?

Can I switch to third-person while not in 'town' in Destiny 2?

What is the evidence on the danger of feeding whole blueberries and grapes to infants and toddlers?

Have only girls been born for a long time in this village?

Why we don't have vaccination against all diseases which are caused by microbes?

When translating the law, who ensures that the wording does not change the meaning of the law?

Church Booleans

Most practical knots for hitching a line to an object while keeping the bitter end as tight as possible, without sag?

How does turbine efficiency compare with internal combustion engines if all the turbine power is converted to mechanical energy?

Natural Pattern

Was this pillow joke on Friends intentional or a mistake?

How to avoid using System.String with Rfc2898DeriveBytes in C#

IndexOptimize - Configuration

What is the hex versus octal timeline?

Can you be convicted for being a murderer twice?

How to "know" if I have a passion?

Do ability scores have any effect on casting Wish spell

Why is my Earth simulation slower than the reality?

Was Switzerland really impossible to invade during WW2?



How to use the discriminator of single table inheritance in a unicity constraint?


Single Table Inheritance in DjangoRails Single Table InheritanceHibernate, single table inheritance and using field from superclass as discriminator columnSingle Table Inheritance or Class Table Inheritance?Single Table Inheritance QueryCan I remove the discriminator column in a Hibernate single table inheritance?Can a single table inheritance entity extend a class table inheritance entity?JPA Query for collection map join tablePostgreSQL table inheritance and constraintsOneToMany Relationship with 3 entity class using JPA and spring boot






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








0















I'm setting up the account activation and password recovery on my application. In both case an email is sent with a link containing a token.



I need to make sure previous tokens become invalid when a new one is sent. In other words, a new link sent by email make the previous link obsolete.



I'm using the same table for all types of tokens. The unicity constraint should be on the duo email-tokenType.



So I tried to use the SINGLE_TABLE inheritance strategy like this :



@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "TOKEN_TYPE")
public abstract class UserToken

@EmbeddedId
private UserTokenIdentity userTokenIdentity;

private String token;



@Embeddable
public class UserTokenIdentity

private String email;

private String tokenType;


@Entity
@DiscriminatorValue("A")
public class ActivationToken extends UserToken



@Entity
@DiscriminatorValue("P")
public class ResetPasswordToken extends UserToken




The problem is i can't do that because of the following error :



Caused by: org.hibernate.DuplicateMappingException: Table [user_token] contains physical column name [token_type] referred to by multiple physical column names: [tokenType], [TOKEN_TYPE]


That's because i used the field in primary key AND as discriminator for the inheritance. I don't know why but it seems to not be allowed.



Can you give me your opinion on how should I do this ?



I'm using liquibase to create manually the database.



Thank you










share|improve this question
































    0















    I'm setting up the account activation and password recovery on my application. In both case an email is sent with a link containing a token.



    I need to make sure previous tokens become invalid when a new one is sent. In other words, a new link sent by email make the previous link obsolete.



    I'm using the same table for all types of tokens. The unicity constraint should be on the duo email-tokenType.



    So I tried to use the SINGLE_TABLE inheritance strategy like this :



    @Entity
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "TOKEN_TYPE")
    public abstract class UserToken

    @EmbeddedId
    private UserTokenIdentity userTokenIdentity;

    private String token;



    @Embeddable
    public class UserTokenIdentity

    private String email;

    private String tokenType;


    @Entity
    @DiscriminatorValue("A")
    public class ActivationToken extends UserToken



    @Entity
    @DiscriminatorValue("P")
    public class ResetPasswordToken extends UserToken




    The problem is i can't do that because of the following error :



    Caused by: org.hibernate.DuplicateMappingException: Table [user_token] contains physical column name [token_type] referred to by multiple physical column names: [tokenType], [TOKEN_TYPE]


    That's because i used the field in primary key AND as discriminator for the inheritance. I don't know why but it seems to not be allowed.



    Can you give me your opinion on how should I do this ?



    I'm using liquibase to create manually the database.



    Thank you










    share|improve this question




























      0












      0








      0








      I'm setting up the account activation and password recovery on my application. In both case an email is sent with a link containing a token.



      I need to make sure previous tokens become invalid when a new one is sent. In other words, a new link sent by email make the previous link obsolete.



      I'm using the same table for all types of tokens. The unicity constraint should be on the duo email-tokenType.



      So I tried to use the SINGLE_TABLE inheritance strategy like this :



      @Entity
      @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
      @DiscriminatorColumn(name = "TOKEN_TYPE")
      public abstract class UserToken

      @EmbeddedId
      private UserTokenIdentity userTokenIdentity;

      private String token;



      @Embeddable
      public class UserTokenIdentity

      private String email;

      private String tokenType;


      @Entity
      @DiscriminatorValue("A")
      public class ActivationToken extends UserToken



      @Entity
      @DiscriminatorValue("P")
      public class ResetPasswordToken extends UserToken




      The problem is i can't do that because of the following error :



      Caused by: org.hibernate.DuplicateMappingException: Table [user_token] contains physical column name [token_type] referred to by multiple physical column names: [tokenType], [TOKEN_TYPE]


      That's because i used the field in primary key AND as discriminator for the inheritance. I don't know why but it seems to not be allowed.



      Can you give me your opinion on how should I do this ?



      I'm using liquibase to create manually the database.



      Thank you










      share|improve this question
















      I'm setting up the account activation and password recovery on my application. In both case an email is sent with a link containing a token.



      I need to make sure previous tokens become invalid when a new one is sent. In other words, a new link sent by email make the previous link obsolete.



      I'm using the same table for all types of tokens. The unicity constraint should be on the duo email-tokenType.



      So I tried to use the SINGLE_TABLE inheritance strategy like this :



      @Entity
      @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
      @DiscriminatorColumn(name = "TOKEN_TYPE")
      public abstract class UserToken

      @EmbeddedId
      private UserTokenIdentity userTokenIdentity;

      private String token;



      @Embeddable
      public class UserTokenIdentity

      private String email;

      private String tokenType;


      @Entity
      @DiscriminatorValue("A")
      public class ActivationToken extends UserToken



      @Entity
      @DiscriminatorValue("P")
      public class ResetPasswordToken extends UserToken




      The problem is i can't do that because of the following error :



      Caused by: org.hibernate.DuplicateMappingException: Table [user_token] contains physical column name [token_type] referred to by multiple physical column names: [tokenType], [TOKEN_TYPE]


      That's because i used the field in primary key AND as discriminator for the inheritance. I don't know why but it seems to not be allowed.



      Can you give me your opinion on how should I do this ?



      I'm using liquibase to create manually the database.



      Thank you







      spring-boot spring-data-jpa single-table-inheritance liquibase-hibernate






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 27 at 16:54







      flodor2

















      asked Mar 27 at 15:48









      flodor2flodor2

      227 bronze badges




      227 bronze badges

























          0






          active

          oldest

          votes










          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%2f55381355%2fhow-to-use-the-discriminator-of-single-table-inheritance-in-a-unicity-constraint%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes




          Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.







          Is this question similar to what you get asked at work? Learn more about asking and sharing private information with your coworkers using Stack Overflow for Teams.



















          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%2f55381355%2fhow-to-use-the-discriminator-of-single-table-inheritance-in-a-unicity-constraint%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

          SQL error code 1064 with creating Laravel foreign keysForeign key constraints: When to use ON UPDATE and ON DELETEDropping column with foreign key Laravel error: General error: 1025 Error on renameLaravel SQL Can't create tableLaravel Migration foreign key errorLaravel php artisan migrate:refresh giving a syntax errorSQLSTATE[42S01]: Base table or view already exists or Base table or view already exists: 1050 Tableerror in migrating laravel file to xampp serverSyntax error or access violation: 1064:syntax to use near 'unsigned not null, modelName varchar(191) not null, title varchar(191) not nLaravel cannot create new table field in mysqlLaravel 5.7:Last migration creates table but is not registered in the migration table

          용인 삼성생명 블루밍스 목차 통계 역대 감독 선수단 응원단 경기장 같이 보기 외부 링크 둘러보기 메뉴samsungblueminx.comeh선수 명단용인 삼성생명 블루밍스용인 삼성생명 블루밍스ehsamsungblueminx.comeheheheh

          155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해