Ajuda com mapeamento de 3 tabelas Annotations

0 respostas
M

Pessoal, estou com esse problema na minha base, alguém pode me ajudar???

Somente a tabela Setor está inserindo no banco :cry:

Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: modelo.Contribuicao.setor in modelo.Setor.contribuicao

O hibernate faz a persistência de objetos, correto. Blz
Já vi alguns exemplos onde o atributo da tabela que faz uma referência a outra tabela não é preenchido. Ex.:

Tabela A( id; id_B; )

Na hora de inserir no banco, o atributo id_B não tem nenhum dado. E o mapeamento fica assim:

@ManyToOne

@JoinColumn(name="id_B")

private B b;
Tabela B(
id;
)

@OneToMany(mappedBy="B")
private Set < A > a;

Por favor me corrijam se eu estiver errado.

Tabela Dizimista:

/**
 * &lt;code&gt;
 * &lt;pre&gt;
 * create table dizimista(
 *      id bigint not null auto_increment,
 *      id_setor bigint not null,
 *      nome varchar(50),
 *      endereco varchar(60) not null,
 *      data_nascimento date,
 *      constraint fk_chave1 primary key(id),
 *      constraint fk_estrangeira1 foreign key(id_setor) references setor(id)
 *      on update cascade
 *      on delete cascade
 * );
 * &lt;/pre&gt;
 * &lt;/code&gt;
 */
@Entity
@Table(name="dizimista")
public class Dizimista implements Serializable{

    @Id
    @Column(name="id")
    @GeneratedValue
    private long id = 0;

    @Basic
    @Column(name="id_setor", insertable = false, updatable = false)
    private long id_setor = 0;

    @Basic
    @Column(name="nome")
    private String nome = "";

    @Basic
    @Column(name="endereco")
    private String endereco = "";

    @Column(name="data_nascimento")
    @Temporal(TemporalType.DATE)
    private Date data_nascimento = null;

 /**************  Relacionamento   ***********************************/
    @ManyToOne
    @JoinColumn(name="id_setor", insertable = false, updatable = false)
    private Setor setor;

    @OneToOne(cascade = CascadeType.ALL)
    private Contribuicao contribuicao;
/*********************************************************************/

Tabela Contribuicao:

/**
 *
 * &lt;code&gt;
 * &lt;pre&gt;
 * create table contribuicao(
 *      data_contribuicao date not null,
 *      id_dizimista bigint not null,
 *      id_setor bigint not null,
 *      janeiro tinyint,
 *      fevereiro tinyint,
 *      marco tinyint,
 *      abril tinyint,
 *      maio tinyint,
 *      junho tinyint,
 *      julho tinyint,
 *      agosto tinyint,
 *      setembro tinyint,
 *      outubro tinyint,
 *      novembro tinyint,
 *      dezembro tinyint,
 *      constraint fk_chave3 primary key(data_contribuicao),
 *      constraint fk_estrangeira2 foreign key(id_dizimista) references dizimista(id),
 *      constraint fk_estrangeira3 foreign key(id_setor) references setor(id)
 *      on update cascade
 *      on delete cascade
 * );
 *
 * &lt;/pre&gt;
 * &lt;/code&gt;
 */
@Entity
@Table(name="contribuicao")
public class Contribuicao implements Serializable{

    @Id
    @Temporal(TemporalType.DATE)
    @Column(name="data_contribuicao")
    private Date data_contribuicao = null;

    @Basic
    @Column(name="id_dizimista")
    private long id_dizimista = 0;

    @Basic
    @Column(name="id_setor", insertable = false, updatable = false)
    private long id_setor = 0;

    @Basic
    @Column(name="janeiro")
    private boolean janeiro = false;

    @Basic
    @Column(name="fevereiro")
    private boolean fevereiro = false;

    @Basic
    @Column(name="marco")
    private boolean marco = false;

    @Basic
    @Column(name="abril")
    private boolean abril = false;

    @Basic
    @Column(name="maio")
    private boolean maio = false;

    @Basic
    @Column(name="junho")
    private boolean junho = false;

    @Basic
    @Column(name="julho")
    private boolean julho = false;

    @Basic
    @Column(name="agosto")
    private boolean agosto = false;

    @Basic
    @Column(name="setembro")
    private boolean setembro = false;

    @Basic
    @Column(name="outubro")
    private boolean outubro = false;

    @Basic
    @Column(name="novembro")
    private boolean novembro = false;

    @Basic
    @Column(name="dezembro")
    private boolean dezembro = false;

/**************  Relacionamento   ***********************************/
//    @ManyToOne
//    @JoinColumn(name="id_setor", insertable = false, updatable = false)
//    private Setor setores;

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="id_setor", insertable = true, updatable = true, nullable = false)
    private Setor setores;
  
    @OneToOne(cascade = CascadeType.ALL)
    private Dizimista dizimistas;

    
/*********************************************************************/

Tabela Setor:

/**
 * &lt;code&gt;
 * &lt;pre&gt;
 * create table setor(
 *      id bigint not null auto_increment,
 *      nome varchar(50) not null,
 *      endereco varchar(60) not null,
 *      constraint fk_chave2 primary key(id)
 * );
 * &lt;/pre&gt;
 * &lt;/code&gt;
 */

@Entity
@Table(name="setor")
public class Setor implements Serializable{
    @Id
    @Column(name="id")
    @GeneratedValue
    private long id = 0;

    @Basic
    @Column(name="nome")
    private String nome = "";

    @Basic
    @Column(name="endereco")
    private String endereco = "";

/**************  Relacionamento   ***********************************/
    @OneToMany(mappedBy="setor")
    private Set &lt;Dizimista&gt; dizimista;

    @OneToMany(mappedBy="setor")
    private Set &lt;Contribuicao&gt; contribuicao;
/*********************************************************************/
Criado 15 de março de 2009
Respostas 0
Participantes 1