带有复合主键的表在SpringBoot中的使用
来源:互联网 发布:自学编程 编辑:程序博客网 时间:2024/05/22 00:22
在SpringBoot开发过程中,我们会遇到有些mysql表是带有复合主键的,此时我们进行开发的过程中需要注意以下方面.
1,首先在该表的实例类中的复合主键前面添加如下注解:
@EmbeddedId
比如下面的例子:我的表叫app_network_configs 这个名字,对应的类是:AppNetwork,对应的复合主键是:AppNetworkKey(AppNetworkKey这个单独拎出来使之形成独立的一个类)@EmbeddedIdprivate AppNetworkKey pk = new AppNetworkKey();
在复合主键的get方法中添加注解:@Transient ,如下的例子:
@Transientpublic App getApp() { return getPk().getApp();}@Transientpublic Network getNetwork() { return getPk().getNetwork();}
2,在AppNetworkKey 中我们需要在类的头顶加上这样的注解:@Embeddable
然后后面的就按照正常的方式进行,特别注意,这个类中需要一个空的构造器和含有对应复合主键字段的构造器.
@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "app_id")private App app;@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "network_id")private Network network;public AppNetworkKey() {}public AppNetworkKey(App app, Network network) { this.app = app; this.network = network;}3,使用的例子:有了上面的表,我们可以做如下的操作:public interface AppNetworkRepository extends JpaRepository<AppNetwork,AppNetworkKey> { @Query("select an from AppNetwork an where an.pk.app.id=:appId") List<AppNetwork> findByAppId(@Param("appId")String appId); @Query("select an from AppNetwork an where an.pk.network.id=:networkId") List<AppNetwork> findByNetworkId(@Param("networkId")String networkId);}附上上面的表对应的实体类@Entity@Table(name = "app_network_configs")public class AppNetwork implements Serializable { private static final long serialVersionUID = -5779694190187550788L; @EmbeddedId private AppNetworkKey pk = new AppNetworkKey(); private String config; @Column(name = "config_type") private String configType; private Double weight; @Column(name = "min_ecpm") private Double minEcpm; private Boolean available; @Column(name = "created_at") private Date createdAt; @Column(name = "modified_at") private Date modifiedAt; private Boolean synced; @Column(name = "synced_at") private Date syncedAt; public AppNetworkKey getPk() { return pk; } public void setPk(AppNetworkKey pk) { this.pk = pk; } @Transient public App getApp() { return getPk().getApp(); } @Transient public Network getNetwork() { return getPk().getNetwork(); } public String getConfig() { return config; } public void setConfig(String config) { this.config = config; } public String getConfigType() { return configType; } public void setConfigType(String configType) { this.configType = configType; } public Double getWeight() { return weight; } public void setWeight(Double weight) { this.weight = weight; } public Double getMinEcpm() { return minEcpm; } public void setMinEcpm(Double minEcpm) { this.minEcpm = minEcpm; } public Boolean getAvailable() { return available; } public void setAvailable(Boolean available) { this.available = available; } public Date getCreatedAt() { return createdAt; } public void setCreatedAt(Date createdAt) { this.createdAt = createdAt; } public Date getModifiedAt() { return modifiedAt; } public void setModifiedAt(Date modifiedAt) { this.modifiedAt = modifiedAt; } public Boolean getSynced() { return synced; } public void setSynced(Boolean synced) { this.synced = synced; } public Date getSyncedAt() { return syncedAt; } public void setSyncedAt(Date syncedAt) { this.syncedAt = syncedAt; }}
阅读全文
0 0
- 带有复合主键的表在SpringBoot中的使用
- jpa复合主键的使用
- Hibernate复合主键的使用
- Hibernate 调用带有复合主键的stored procedure
- Hibernate 调用带有复合主键的stored procedure
- hibernate中的复合主键的映射
- Hibernate复合主键的使用(转)
- jpa复合主键的使用 【转载】
- JPA复合主键使用
- Hibernate 使用复合主键
- hibernate中表的复合主键映射表
- 数据表的复合主键
- 数据库的复合主键
- hibernate 映射无主键和复合主键的数据库表
- 数据库建带有主键的表PostgreSQL
- Hibernate中的复合主键映射
- hiberante中使用复合主键
- hiberante中使用复合主键
- LeetCode 50. Pow(x, n)
- 如何让Excel输入数据后自动保护,不能被修改
- 按之字形顺序打印二叉树(java版)
- Jmeter响应数据中文乱码
- Python模块概念
- 带有复合主键的表在SpringBoot中的使用
- mysql如何开启远程访问权限
- android监听开机 android.intent.action.BOOT_COMPLETED
- 接口传值乱码
- 微信小程序:小技巧系列合辑No.1
- 配置文件服务器ftp
- NPM 镜像切换
- 安卓编程规范
- 图像特征提取三大法宝:HOG特征,LBP特征,Haar特征