Persistindo Objeto com FK + Mentawai

1 resposta
R

Tenho duas tabelas no Banco:

Usuario
Integer usercodigo PK;
...

Blog
Integer blogcodigo PK;
Integer usercodigo FK;
...

Esotu tentando adcionar um novo Blog com o Objeto Usuario (usercodigo) como fk, lendo os exemplos na comunidade nao obtive sucesso.

A outra solucao que tentei foi pegar o usuario da secao e adcionar na coluna usercodigo. Tambem nao consegui adcionar pois nao e aceitavel o cast para usar o getUsercodigo do Bean Usuario.

Blog b = input.getObject(Blog.class);
					
			System.out.println(getUserSession().toString());
			
		    b.setUsercodigo(((Usuario)getUserSession()).getUsercodigo());

			b.insert(getBeanSession()); // you can also inject the beanSession inside the object and call insert();

			setUserSession(b);

			addMessage("Seu cadastro foi efetuado com sucesso!");

			return CREATED;
		}
	}

Bean:

public class Blog extends BeanBase{
	
	private Integer blogcodigo;
	private String blognome;
	private Integer usercodigo;
	private Usuario usuario=null;
	
	public Integer getUsercodigo() {
		return usercodigo;
	}
	public void setUsercodigo(Integer usercodigo) {
		this.usercodigo = usercodigo;
	}
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
	public Integer getBlogcodigo() {
		return blogcodigo;
	}
	public void setBlogcodigo(Integer blogcodigo) {
		this.blogcodigo = blogcodigo;
	}
	public String getBlognome() {
		return blognome;
	}
	public void setBlognome(String blognome) {
		this.blognome = blognome;
	}

}

BaseAction:

public class BlogAction extends BaseAction{

	private BeanSession getBeanSession() {

		return (BeanSession) input.getValue("beanSession");
	}
	
	private BlogDAO blogDAO;
	
	// Will be injected...
	public void setBlogDAO(BlogDAO blogDAO) {
		this.blogDAO = blogDAO;
	}	

	public boolean bypassAuthentication(String innerAction) {

		if (innerAction != null && innerAction.equals("add")) return true;

		return false;
	}


	public String add() throws Exception {

		if (!isPost()) {

			return ERROR;

		} else {

			Blog b = input.getObject(Blog.class);
					
			System.out.println(getUserSession().toString());
			
		    b.setUsercodigo(((Usuario)getUserSession()).getUsercodigo());

			b.insert(getBeanSession()); // you can also inject the beanSession inside the object and call insert();

			setUserSession(b);

			addMessage("Seu cadastro foi efetuado com sucesso!");

			return CREATED;
		}
	}

	public String lista() throws Exception {

		List<Blog> l = blogDAO.listAll();

		
		output.setValue("blogs", l);
		
		return SUCCESS;
	}

}

DAO:

public interface BlogDAO {
	
	public List<Blog> find(Blog b);
	
	public Usuario findByBlogcodigo(String blogcodigo);
	
	public List<Blog> listAll() throws Exception;
		
}

MetaBean:

package br.com.blogclient.dao.metabean;

import java.sql.Connection;
import java.util.List;

import org.mentawai.bean.BeanSession;
import org.mentawai.bean.jdbc.JdbcBeanSession;

import br.com.blogclient.bean.Blog;
import br.com.blogclient.bean.Usuario;
import br.com.blogclient.dao.BlogDAO;

public class MetaBeanBlogDAO implements BlogDAO{
	
	private BeanSession session;
	
	public void setBeanSession(BeanSession session) {
		this.session = session;
	}
	
private Connection getConn() {
		
		if (session instanceof JdbcBeanSession) {
		
			JdbcBeanSession jbs = (JdbcBeanSession) session;
			
			return jbs.getConnection();
			
		}
		
		throw new IllegalStateException("Session is not a JdbcBeanSession: " + (session != null ? session.getClass() : "NULL"));
	}

	@Override
	public List<Blog> find(Blog b) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Usuario findByBlogcodigo(String blogcodigo) {
		// TODO Auto-generated method stub
		return null;
	}
	
	public List<Blog> listAll() throws Exception {
				
		
        return this.session.loadList(new Blog());		
	}

}

AppManager loadBeans():

public void loadBeans() {
		
		bean(Usuario.class, "Usuario")
			.pk("usercodigo", DBTypes.SEQUENCE, "usercodigo")
			.field("usernome", DBTypes.STRING)
			.field("usersenha", DBTypes.STRING)
			.field("useremail", DBTypes.STRING);
				
		bean(Blog.class, "Blog")
		.pk("blogcodigo",DBTypes.SEQUENCE)
		.field("blognome", DBTypes.STRING)
		.field("usercodigo","usercodigo",DBTypes.INTEGER);

Queria mesmo tentar salvar o objeto pois vou precisar no decorrer da aplicação.

1 Resposta

saoj

Não entendi o seu problema.

Criado 6 de setembro de 2010
Ultima resposta 16 de abr. de 2011
Respostas 1
Participantes 2