Relacionamento OneToMany Unidirecional (Seam Framework)

0 respostas
scaloni

Olá pessoal, fiz um relacionamento OneToMany unidirecional mas estou com o seguinte problema:
Tenho as entidades Marca e Modelo, uma marca tem vários modelos,
quando vou cadastrar uma marca Chevrolet e um modelo Vectra, fica assim as tabelas:
a tabela marca: nome: Chevrolet ID=1
a tabela modelo: nome: Vectra ID=2

Tipo, era pro ID do modelo iniciar com 1, mas ele sempre começa/continua apartir do ID da marca.

Uso o Framework Seam 2.2.1.Final, Eclipse Helios, Jboss Tools 3.2, PostgresSQL.

@Entity
@Name("modelo")
public class Modelo implements Serializable {
	
	private static final long serialVersionUID = 1769914963712366019L;
	private int id;
	private String nome;
	
	@Id @GeneratedValue
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
}
@Entity
@Name("marca")
public class Marca implements Serializable {

	private static final long serialVersionUID = -2209779972810899787L;
	
	private int id;
	private String nome;
	private List<Modelo> modelos = new ArrayList<Modelo>();
	
	@Id @GeneratedValue
	@Column(name="MARCA_ID")
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	
	@OneToMany(cascade={CascadeType.ALL}) 				
	@JoinColumn(name="MARCA_ID")
	public List<Modelo> getModelos() {
		return modelos;
	}
	public void setModelos(List<Modelo> modelos) {
		this.modelos = modelos;
	}
}
@Stateless
@Name("modeloAction")
public class ModeloAction implements MarcaInterface {

	@In
	private Modelo modelo;
	
	@In
	private Marca marca;
	
	@PersistenceContext
	private EntityManager entityManager;
	
	public String cadastrar() {
		
		try
		{
			if (modelo.getNome() == "")
				modelo.setNome("Sem Nome");
			
			marca = entityManager.find(Marca.class, marca.getId());
			
			if (marca != null){
				marca.getModelos().add(modelo);
				entityManager.persist(marca);
				FacesMessages.instance().add("#{modelo.nome} cadastrado com sucesso!");
			}else
				FacesMessages.instance().add("Marca não encontrada!");
		
			return null;
		}
		catch(IllegalArgumentException e)
		{
			FacesMessages.instance().add("Argumento Inválido");
			return null;
		}
		catch(TransactionRequiredException e)
		{
			FacesMessages.instance().add("Argumento Inválido");
			return null;
		}
	}

	public String excluir() {
		return null;
	}
}
@Stateless
@Name("marcaAction")
public class MarcaAction implements MarcaInterface {
	
	@In @Out
	private Marca marca;
	
	@PersistenceContext
	private EntityManager entityManager;
	
	public String cadastrar() {
		
		try
		{
			if (marca.getNome() == "")
				marca.setNome("Sem Nome");
			
			entityManager.persist(marca);
			
			FacesMessages.instance().add("#{marca.nome} cadastrada com sucesso!");
			
			return null;
		}
		catch(IllegalArgumentException e)
		{
			FacesMessages.instance().add("Argumento Inválido");
			return null;
		}
		catch(TransactionRequiredException e)
		{
			FacesMessages.instance().add("Argumento Inválido");
			return null;
		}
		
	}

	public String excluir() {
		return null;
	}

}
<head>
    	<title>Cadastro de Modelos</title>
    </head>

	<body>
		<f:view>
		
			<h:form>
			
				NOME:<h:inputText value="#{modelo.nome}" /><br/>
				
				ID MARCA:<h:inputText value="#{marca.id}" /><br/>
				<h:commandButton value="Cadastrar" action="#{modeloAction.cadastrar}" />
				
				<h:messages id="messages"/>
				
			</h:form>
			
		</f:view>
	</body>

</html>
<head>
    	<title>Cadastro de Marcas</title>
    </head>

	<body>
		<f:view>
		
			<h:form>
			
				NOME:<h:inputText value="#{marca.nome}" /><br/>
				<h:commandButton value="Cadastrar" action="#{marcaAction.cadastrar}" />
				
				<h:messages id="messages"/>
				
			</h:form>
			
		</f:view>
	</body>

</html>
Criado 19 de abril de 2011
Respostas 0
Participantes 1