package kr.debop4j.data.mapping.model.annotated.collection;
import com.google.common.collect.Maps;
import kr.debop4j.data.model.AnnotatedEntityBase;
import lombok.Getter;
import lombok.Setter;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import javax.persistence.*;
import java.util.Map;
/**
* org.annotated.mapping.domain.model.collection.Car
*
* @author 배성혁 ( sunghyouk.bae@gmail.com )
* @since 12. 12. 15.
*/
@Entity
@Table(name = "`JPA_Car`")
@DynamicInsert
@DynamicUpdate
@Getter
@Setter
public class Car extends AnnotatedEntityBase {
private static final long serialVersionUID = 1714924676723258918L;
@Id
@GeneratedValue
@Column(name = "CarId")
private Long id;
@CollectionTable(name = "CarOptionMap", joinColumns = @JoinColumn(name = "CarId"))
@MapKeyClass(String.class)
@ElementCollection(targetClass = String.class, fetch = FetchType.EAGER)
private Map<String, String> options = Maps.newHashMap();
@CollectionTable(name = "CarOptionTable", joinColumns = @JoinColumn(name = "CarId"))
@MapKeyClass(String.class)
@ElementCollection(targetClass = CarOption.class, fetch = FetchType.EAGER)
private Map<String, CarOption> carOptions = Maps.newHashMap();
}