package org.hibernate.test.annotations.onetoone.hhh4851; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToOne; import javax.persistence.OneToOne; import javax.persistence.Table; import javax.persistence.UniqueConstraint; /** * this class represents a logical representation of a terminal it could be linked to a terminal or not it contains the * alias of the terminal and is virtualizable */ @Entity @Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "name" }) }) public class ManagedDevice extends BaseEntity { private String name; private Device device; private DeviceGroupConfig deviceGroupConfig = null; public ManagedDevice() { } public ManagedDevice(String alias) { this.name = alias; } public String getName() { return name; } @OneToOne(fetch = FetchType.LAZY) @JoinColumn(name = "terminal_id") public Device getDevice() { return device; } @ManyToOne(optional = true, fetch = FetchType.LAZY) @JoinTable(name = "ManDev_DevGroupConf", joinColumns = { @JoinColumn(name = "MavDev_id", unique = true) }, inverseJoinColumns = { @JoinColumn(name = "DevGroupConf_id") }) public DeviceGroupConfig getDeviceGroupConfig() { return deviceGroupConfig; } public void setName(String alias) { this.name = alias; } public void setDevice(Device terminal) { this.device = terminal; } public void setDeviceGroupConfig(DeviceGroupConfig terminalGroup) { this.deviceGroupConfig = terminalGroup; } }