前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot JPA 实现复合主键

Springboot JPA 实现复合主键

原创
作者头像
netkiller old
发布2018-06-26 10:30:49
1.9K1
发布2018-06-26 10:30:49
举报
文章被收录于专栏:NetkillerNetkiller

本文节选自 《Netkiller Spring cloud 手札》

Netkiller Spring Cloud 手札

Spring Cloud Cookbook

Mr. Neo Chan, 陈景峰(BG7NYT)

中国广东省深圳市宝安区龙华镇溪山美地 518109 +86 13113668890 +86 755 29812080 <netkiller@msn.com>

$Id: book.xml 606 2013-05-29 09:52:58Z netkiller $

版权 © 2015-2018 Neo Chan

版权声明

转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。

http://www.netkiller.cn

http://netkiller.github.io

http://netkiller.sourceforge.net

微信订阅号 netkiller-ebook (微信扫描二维码)

QQ:13721218 请注明“读者”

QQ群:128659835 请注明“读者”

代码语言:java
复制
package cn.netkiller.wallet.domain;

import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;

@Entity
public class UserHasToken {
	@EmbeddedId
	private UserHasTokenPk id;

	private String name;
	private String symbol;
	private int decimals;

	public UserHasToken() {
		// TODO Auto-generated constructor stub
	}

	public UserHasTokenPk getId() {
		return id;
	}

	public void setId(UserHasTokenPk id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSymbol() {
		return symbol;
	}

	public void setSymbol(String symbol) {
		this.symbol = symbol;
	}

	public int getDecimals() {
		return decimals;
	}

	public void setDecimals(int decimals) {
		this.decimals = decimals;
	}

	@Embeddable
	public class UserHasTokenPk implements java.io.Serializable {

		private static final long serialVersionUID = 1242827922377178368L;
		private String address;
		private String contractAddress;

		public UserHasTokenPk(String address, String contractAddress) {
			super();
			this.address = address;
			this.contractAddress = contractAddress;
		}

		public String getAddress() {
			return address;
		}

		public void setAddress(String address) {
			this.address = address;
		}

		public String getContractAddress() {
			return contractAddress;
		}

		public void setContractAddress(String contractAddress) {
			this.contractAddress = contractAddress;
		}

		@Override
		public String toString() {
			return "UserHasTokenPk [address=" + address + ", contractAddress=" + contractAddress + "]";
		}

	}

}
代码语言:java
复制
package cn.netkiller.wallet.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import cn.netkiller.wallet.domain.UserHasToken;
import cn.netkiller.wallet.domain.UserHasToken.UserHasTokenPk;;

public interface UserHasTokenRepository extends JpaRepository<UserHasToken, UserHasTokenPk> {

	@Query("select an from UserHasToken uht where uht.id.address=:address")
	List<UserHasToken> findByAddress(@Param("address") String address);

	@Query("select an from UserHasToken uht where uht.id.address=:address and uht.id.contractAddress=:contractAddress")
	List<UserHasToken> findByPk(@Param("address") String address, @Param("contractAddress") String contractAddress);
}
		

数据库表结构

代码语言:sql
复制
CREATE TABLE "user_has_token" (
  "address" varchar(255) NOT NULL,
  "contract_address" varchar(255) NOT NULL,
  "decimals" int(11) NOT NULL,
  "name" varchar(255) DEFAULT NULL,
  "symbol" varchar(255) DEFAULT NULL,
  PRIMARY KEY ("address","contract_address")
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Netkiller Spring Cloud 手札
    • Spring Cloud Cookbook
      • Mr. Neo Chan, 陈景峰(BG7NYT)
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档