/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.annotations.index.jpa;
import java.util.List;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Index;
import javax.persistence.ManyToMany;
import javax.persistence.SecondaryTable;
import javax.persistence.Table;
/**
* @author Strong Liu <stliu@hibernate.org>
*/
@Entity
@Table(indexes = {
@Index(unique = true, columnList = "brand, producer")
, @Index(name = "Car_idx", columnList = "since DESC")
})
@SecondaryTable(name = "T_DEALER", indexes = @Index(columnList = "dealer_name ASC, rate DESC"))
public class Car {
@Id
private long id;
private String brand;
private String producer;
private long since;
@AttributeOverrides({
@AttributeOverride(name = "name", column = @Column(name = "dealer_name", table = "T_DEALER")),
@AttributeOverride(name = "rate", column = @Column(table = "T_DEALER"))
})
@Embedded
private Dealer dealer;
@ElementCollection
@CollectionTable(name = "CAR_DEALTERS", indexes = @Index(columnList = "name"))
private Set<Dealer> otherDealers;
@ManyToMany(cascade = CascadeType.ALL, mappedBy = "cars")
private List<Importer> importers;
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public Dealer getDealer() {
return dealer;
}
public void setDealer(Dealer dealer) {
this.dealer = dealer;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public List<Importer> getImporters() {
return importers;
}
public void setImporters(List<Importer> importers) {
this.importers = importers;
}
public Set<Dealer> getOtherDealers() {
return otherDealers;
}
public void setOtherDealers(Set<Dealer> otherDealers) {
this.otherDealers = otherDealers;
}
public String getProducer() {
return producer;
}
public void setProducer(String producer) {
this.producer = producer;
}
public long getSince() {
return since;
}
public void setSince(long since) {
this.since = since;
}
}