[JPA] [JBoss7.1] - Java使用JPA Annotation扩展了两个表的class 2 Id

时间:2012-11-09 09:21:30

标签: java jpa persistence jboss7.x

我对设计问题有疑问如下:

  1. 模板类包含基本信息

  2. 扩展模板类的订阅类

  3. 是否可以同时拥有两个ID - 模板的1个id字段 - 订阅的1个id字段

    有两个类,DB中应该有两个表存储并且是持久存储的。 我的设计是:模板可重用并持久化,系统可以创建Subscription对象复制表单Template类,Subscrption类使用与Template不同的生成Id。

    因此'模板'需要ID,'订阅'需要我的应用程序的另一个ID。

    非常感谢你的帮助。

    和编码如下:

    Template.class

    @Entity
    @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
    @Table(name="template")
    public class Template implements Serializable{
    
    private static final long serialVersionUID = 12345234567867890L;
    
    
    @Id @GeneratedValue(generator="hibernate-uuid.hex")
    @GenericGenerator(name="hibernate-uuid.hex",strategy = "uuid.hex")
    @Column(name="id",length = 40)
    protected String id;
    
    @NotNull
    @Column(name = "template_attribute",length = 32)
    protected String template_atrribute;
      ... 
     getter and setter and constructor
    

    使用我的Subscription类代码:

    @Entity
    @Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
    @javax.persistence.TableGenerator(name="SID",.................)
    @Table(name="user_subscription")
    public class UserSubscription extends Template implements Serializable{
    
    @GeneratedValue(strategy=GenerationType.TABLE, generator="SID")
    @Column(name="subscriptionId",length = 11)
    protected Integer subscriptionId;
    
    @NotNull
    @Column(name = "start_date")
    protected Date startDate;
    
    //getter and setting and constructor
    

    }

0 个答案:

没有答案