/*
 *******************************************************************************
 * Copyright (c) 2019 Contributors to the Eclipse Foundation
 *
 * See the NOTICE file(s) distributed with this work for additional
 * information regarding copyright ownership.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 *
 * SPDX-License-Identifier: EPL-2.0
 *******************************************************************************
 */
package org.eclipse.openk.contactbasedata.model;

import lombok.Data;

import javax.persistence.*;
import java.util.UUID;

@Data
@Entity
public class TblCommunication {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,  generator = "tbl_communication_id_seq")
    @SequenceGenerator(name = "tbl_communication_id_seq", sequenceName = "tbl_communication_id_seq", allocationSize = 1)
    @Column(name = "id", updatable = false)
    private Long id;
    private UUID uuid;
    private String communicationData;

    @ManyToOne
    @JoinColumn( name = "fk_contact_id")
    private TblContact tblContact;

    @OneToOne
    @JoinColumn( name = "fk_communication_type")
    private RefCommunicationType refCommunicationType;

}