Duvida Hibernate hibernate.hbm2ddl.auto como update

1 resposta
brucsantos

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!

1 Resposta

brucsantos

Alguma ideia? alguem?

Obrigado

Criado 17 de fevereiro de 2010
Ultima resposta 18 de fev. de 2010
Respostas 1
Participantes 1