Boa tarde!
Pessoal eu criei todas as minhas classes(Entidades) com as annotations necessarias, @Id,manyTomany,ManyToOne, em fim…
Minha duvida é o seguinte:
Quando o hibernate cria as tabelas ele não define como chave o campo forengkey, fica como relacionamento fraco.
Como faço pra deixar o relacionamento forte?
Vou colocar as classes que usei como manyToOne que são Responsible e ActionControl:
package br.com.mercadolivre.robot.domain;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.validator.NotNull;
@Entity
@Table(name="responsible")
public class Responsible implements br.com.conrado.j4b.domain.Entity {
private static final long serialVersionUID = -8863408221664530814L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="identity",nullable=false)
private Long identity;
private String name;
private String login;
private String password;
@Transient
private String passwordString;
private String email;
private Date dateRegister;
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(
name = "responsiblepermissions",
joinColumns = {
@JoinColumn(
name = "responsibleIdentity",
nullable = false,
updatable = false) },
inverseJoinColumns = {
@JoinColumn(
name = "permissionIdentity",
nullable = false,
updatable = false) }
)
private Set<Permission> permissions = new HashSet<Permission>();
@OneToMany(mappedBy="responsible",fetch=FetchType.EAGER)
private Set<ActionControl> actionsControls = new HashSet<ActionControl>();
@OneToMany(mappedBy="responsible",fetch=FetchType.LAZY)
private Set<RangeValueLog> rangeValuesLog = new HashSet<RangeValueLog>();
public Long getIdentity() {
return identity;
}
public void setIdentity(Long identity) {
this.identity = identity;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Transient
public String getPasswordString() {
return passwordString;
}
public void setPasswordString(String passwordString) {
this.passwordString = passwordString;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Temporal(value=TemporalType.TIMESTAMP)
public Date getDateRegister() {
return dateRegister;
}
public void setDateRegister(Date dateRegister) {
this.dateRegister = dateRegister;
}
public void addResponsablePermissions(Permission permission) {
this.permissions.add(permission);
}
public void removeResponsablePermissions(Permission permission) {
this.permissions.remove(permission);
}
public Set<Permission> getPermissions() {
return this.permissions;
}
public void addRangeValuesLog(RangeValueLog rangeValuesLog) {
this.rangeValuesLog.add(rangeValuesLog);
}
public void removeRangeValuesLog(RangeValueLog rangeValuesLog) {
this.rangeValuesLog.remove(rangeValuesLog);
}
public Set<RangeValueLog> getRangeValuesLog() {
return this.rangeValuesLog;
}
public void addActionsControls(ActionControl actionControl) {
this.actionsControls.add(actionControl);
}
public void removeActionsControls(ActionControl actionControl) {
this.actionsControls.remove(actionControl);
}
public Set<ActionControl> getActionsControls() {
return this.actionsControls;
}
@Override
public int hashCode() {
return this.identity == null ? 1 : this.identity.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof Responsible && this.equals((Responsible)obj);
}
private boolean equals(Responsible other) {
return this.identity != null && this.identity.equals(other.identity);
}
}
Ea ActionControl
package br.com.mercadolivre.robot.domain;
import java.util.Date;
import javax.persistence.Embeddable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.JoinTable;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.annotations.ForeignKey;
import org.hibernate.search.annotations.Key;
import org.hibernate.validator.NotNull;
@Entity
@Table(name="actioncontrol")
public class ActionControl implements br.com.conrado.j4b.domain.Entity {
private static final long serialVersionUID = 4325106469813479249L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long identity;
@ManyToOne()
@JoinColumn(name="responsibleIdentity")
@NotNull
private Responsible responsible;
private Integer action;
private Date dateAction;
public Long getIdentity() {
return identity;
}
public void setIdentity(Long identity) {
this.identity = identity;
}
public Responsible getResponsible() {
return responsible;
}
@ManyToOne(targetEntity=Responsible.class)
public void setResponsible(Responsible responsible) {
this.responsible = responsible;
}
public Integer getAction() {
return action;
}
public void setAction(Integer action) {
this.action = action;
}
@Temporal(TemporalType.TIMESTAMP)
public Date getDateAction() {
return dateAction;
}
public void setDateAction(Date dateAction) {
this.dateAction = dateAction;
}
@Override
public int hashCode() {
return this.identity.hashCode();
}
@Override
public boolean equals(Object obj) {
return obj instanceof ActionControl && this.equals((ActionControl)obj);
}
private boolean equals(ActionControl other) {
return this.identity.equals(other.identity);
}
}
Se alguem poder me ajudar, Agradeço!