MappedSuperclass - Change SequenceGenerator in Subclass

后端 未结 4 1896
暖寄归人
暖寄归人 2020-11-29 07:07

I\'m using JPA2 with Hibernate and try to introduce a common base class for my entities. So far it looks like that:

@MappedSuperclass
public abstract class B         


        
4条回答
  •  旧时难觅i
    2020-11-29 07:44

    Yes, it is possible. You can override the default generator name with the @SequenceGenerator annotation.

    • Base class
        @MappedSuperclass
        public abstract class PersistentEntity implements Serializable
        {
            private static final long serialVersionUID = 1L;
    
            @Id
            @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "default_gen")
            protected Long id = 0L;
    
            public Long getId()
            {
                return id;
            }
    
            public void setId(Long id)
            { 
                this.id = id;
            }
        }
    • Sequence (SQL)

      create sequence role_seq;
    • Derived class

        @Entity
        @Table(name = "role")
        @SequenceGenerator(name = "default_gen", sequenceName = "role_seq", allocationSize = 1)
        public class Role extends PersistentEntity implements Serializable
        {
            private static final long serialVersionUID = 1L;
    
            @NotNull
            @Size(max = 32)
            private String name;
    
            public String getName()
            {
                 return name;
            }
    
            public void setName(String name)
            {
                 this.name = name;
            }   
        }
    • This approach worked fine in Hibernate 4.1.x, but it didn't in EclipseLink 2.x.

    edit

    • As per the comment, it seems to be working with EclipseLink 2.6.1-RC1.

提交回复
热议问题