Associação + MYSQL

6 respostas
S

ola, boa tarde a todos…

gostaria de saber se alguns de vcs tem um tutorial ou video aula q explique como faço para

inserir dados no banco com associação

pq estou com o seguinte problema…

estou desenvolvendo uma ATA e essa pode ter varios TÓPICOS, sendo que Tópicos será tbm uma tabela no meu banco

fazendo assim com que eu tenha uma relacionamento 1 - n UMA ATA PODE TER VARIOS TÓPICOS, PORÉM UM TÓPICO PODE PERTENCER SOMENTE A UMA ATA — ASSIM TENHO 1 ATA PARA N TÓPICOS

então quando vou cadastrar uma nova ata no meu MÉTODO InserirAta tenho q passar os tópicos porém não sei como pois é uma agregação

public void inserir(Ata ata) throws Exception {
        PreparedStatement pst;
        String sql = "INSERT INTO ata (assembleia_local_id, usuario_id, numeroAta, anoBahai, nomeReuniao, oracoes, dataUsual,mocoes,presentes,mesBahai) VALUES(?,?,?,?,?,?,?,?,?,?)";
        pst = conn.prepareStatement(sql);
    //    pst.setInt(1, ata.getAssembleiaLocal());
      //  pst.setInt(2, ata.getUsuario());
        pst.setInt(3, ata.getNumeroAta());
        pst.setInt(4, ata.getAnoBahai());
        pst.setString(5, ata.getNomeReuniao());
        pst.setString(6, ata.getOracoes());
        pst.setString(7, ata.getDataUsual());
        //pst.setString(8, ata.getTopicos()); Aqui teria q ter minha agregação q chamaria o método InserirTópicos passando tbm o id da ata para cadastrar os tópicos, porém não sei como fazer
        pst.setString(9, ata.getPresentes());
        pst.setString(10,ata.getMesBahai());
        pst.execute();
    }
public void inserir(Topicos topicos) throws Exception{
        PreparedStatement pst;
        String sql = "INSERT INTO topicos(id, atas_id, texto) VALUES (?,?,?)";
        pst = conn.prepareStatement(sql);
        pst.setInt(1, topicos.getId());
        pst.setInt(2, topicos.getAta());// aqui ele tinha q passar o id da ATA porém não sei tbm como fazer
        pst.setString(3, topicos.getTexto());
        
    }

6 Respostas

drsmachado

Relacionamentos 1 : N obrigam que você, caso queira integridade no banco, possua uma FK de ATA na tabela TOPICO. Sendo assim, precisa primeiramente, inserir a ATA e gerar seu ID, que será usado para inserir os TOPICOS que criou e está inserindo.

Lemuras

Sobre a parte da agregação, vc teria q ter uma coleção de objetos de topicos dentro da ata, e não um objeto ata dentro de topicos.

S

não sei se entendi direito
Ata

String Titulo, presentes;
int idAta;
Topicos topicos;

Topicos

String texto;
int ataId, topicoId;

foi isso q vc quis dizer?

drsmachado

Isso é irrelevante, o que importa é que ele possua o ID da ATA para persistir os TOPICOs.
Ele pode ter a ata como atributo de Topico e associá-las em uma outra classe, como pode ter topico como atributo de ata e fazer essa associação diretamente em ata.
O que ele precisa é no banco de dados, ter na tabela tópicos a FK referenciando a PK de ata.

Lemuras

Isso é irrelevante, o que importa é que ele possua o ID da ATA para persistir os TOPICOs.
Ele pode ter a ata como atributo de Topico e associá-las em uma outra classe, como pode ter topico como atributo de ata e fazer essa associação diretamente em ata.
O que ele precisa é no banco de dados, ter na tabela tópicos a FK referenciando a PK de ata.

Concordo com vc, mais como ele falou sobre a agregação so quis citar a forma mais correta de implementar do diagrama de classe para o codigo.

Lemuras

não sei se entendi direito
Ata

String Titulo, presentes;
int idAta;
Topicos topicos;

Topicos

String texto;
int ataId, topicoId;

foi isso q vc quis dizer?

seria assim:

public class Ata {
	
	private long id;
	private List<Topicos> topicos;
	//referencia de topico "Objeto-Parte"
}

public class Topicos {
	
	private int id;

}

seria isso, o objeto-parte referenciado dentro do objeto-todo

Criado 12 de julho de 2012
Ultima resposta 12 de jul. de 2012
Respostas 6
Participantes 3