代码之家  ›  专栏  ›  技术社区  ›  homaxto

JPA中的复合键

  •  8
  • homaxto  · 技术社区  · 16 年前


    我之所以要这样做,是因为主键应该在另一个表中用作外键,而使其复合将不好。

    @Entity
    @Table(name = "dm_action_plan")
    public class ActionPlan {
        @Id
        private int pk;
        @Column(name = "command", nullable = false)
        private String command;
        @Column(name = "model", nullable = false)
        String model;
    }
    
    2 回复  |  直到 13 年前
        1
  •  18
  •   Steve McNail Michel    8 年前

    你可以用 @UniqueConstraint 大概是这样的:

    @Entity
    @Table(name = "dm_action_plan",
           uniqueConstraints={ @UniqueConstraint(columnNames= "command","model") } )
    public class ActionPlan {
        @Id
        private int pk;
    
        @Column(name = "command", nullable = false)
        private String command;
    
        @Column(name = "model", nullable = false)
        String model;
    }
    

    这将允许JPA实现为唯一约束生成DDL。

        2
  •  0
  •   Nicolas    16 年前

    使用@GeneratedValue表示将生成密钥,@UniqueConstraint表示唯一性

    @Entity
    @Table(name = "dm_action_plan"
           uniqueConstraint = @UniqueConstraint({"command", "model"})
    )
    public class ActionPlan {
        @Id
        @GeneratedValue
        private int pk;
        @Column(name = "command", nullable = false)
        private String command;
        @Column(name = "model", nullable = false)
        String model;
    }
    
    推荐文章