07/13
2013
스프링소셜 UserConnection 에 unique key 등록하기
package com.millky.m2.model.domain.entity.user;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import lombok.Data;
/**
* @author byuri
* 이 클래스는 테이블 생성용으로 사용되고 있다.
*/
@Data
@Entity
@IdClass(ProjectId.class)
// 이 주석된방법은 중간에도 생성이 가능... 하지만....
// @org.hibernate.annotations.Table(appliesTo = "UserConnection", indexes = { @Index(name = "UserConnectionRank", columnNames = { "userId",
// "providerId", "rank" }) })
// @javax.persistence.Table(name = "UserConnection")
// 아래 방법은 최초 생성시에만 작동
@Table(name = "UserConnection", uniqueConstraints = {
@UniqueConstraint(name = "UserConnectionRank", columnNames = { "userId", "providerId", "rank" }),
@UniqueConstraint(name = "providerUser", columnNames = { "providerId", "providerUserId" }) })
public class UserConnection
{
@Id
// @Column(unique = true)
private String userId;
@Id
private String providerId;
@Id
private String providerUserId;
private int rank;
private String displayName;
@Column(length = 512)
private String profileUrl;
@Column(length = 512)
private String imageUrl;
// @Column(length = 255, unique = true)
private String accessToken;
private String secret;
private String refreshToken;
private Long expireTime;
}
class ProjectId implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
String userId;
String providerId;
String providerUserId;
}