Ola a todos
estou com a seguinte duvida, como configuro meu bean, para nao alterar nenhuma informação no bd, utilizando o Hibernate. Poderia sobreescrever sqlinsert, update e delete?? ou teria alguma annotation que faria isso pra mim ?
Grato
Ola a todos
estou com a seguinte duvida, como configuro meu bean, para nao alterar nenhuma informação no bd, utilizando o Hibernate. Poderia sobreescrever sqlinsert, update e delete?? ou teria alguma annotation que faria isso pra mim ?
Grato
Use a anotação em cima do atributo:
@Column(updatable=false)
Abraço!
Use a anotação em cima do atributo:@Column(updatable=false)Abraço!
estou usando:
@JoinColumn(name="VEICULO",insertable=false,updatable=false,nullable=false)
private Veiculo veiculo;
e não consigo ainda obter resultado.
executo a seguinte linha:
listos.get(1).getVeiculo().setVeiculo("CORSA");
dou um commit e ele atualiza a tabela.
Mas ai vc não anotou um atributo que representa coluna no banco, vc anotou um atributo do tipo Veiculo que representa uma tabela. Acho que a estrutura está mal formulada, se vc vc não quer atualizar objeto, para que aquele set ali? Se vc quer atualizar um veiculo mas não quer que um de seus atributos sejam atualizados, a anotação têm que ser colocada no atributo que está na classe Veiculo.
Não seria isso?
Abraço!
Mas ai vc não anotou um atributo que representa coluna no banco, vc anotou um atributo do tipo Veiculo que representa uma tabela. Acho que a estrutura está mal formulada, se vc vc não quer atualizar objeto, para que aquele set ali? Se vc quer atualizar um veiculo mas não quer que um de seus atributos sejam atualizados, a anotação têm que ser colocada no atributo que está na classe Veiculo.
Não seria isso?
Abraço!
Obrigado pela resposta e pala ajuda
Fui pensar direito daonde deveria colocar as anotações de insertable e updatable, e ao inves de deixar numa classe aonde fica o Pk, coloquei na propria Veiculo , é deu certo. consegui NÃO modificar os valores na tabela. Abaixo esta como ficou meus beans
ex:
Bean Pessoa:
@JoinColumn(name="VEICULO",insertable=false,updatable=false,nullable=false)
private Veiculo veiculo;
Bean Veiculo:
public class Veiculo {
@Id
@Column(insertable=false,updatable=false)
private String placa;
@Column(name="MODELO",insertable=false,updatable=false)
private String veiculo;
Obs.: O Uso do Set, so foi pra testar a codigo, se esta modificando.
Só possuo uma duvida agora . Na Cascate, não setando nada no relacionamento ,conseguiria impedir que ele excluisse o registro na tabela?
Vc poderia até remover o updatable=false de cima do atributo veiculo, pois lá na classe Veiculo o atributo que vc não quer que seja atualizado já está anotado.
Outra coisa:
@Column(name="MODELO")
private String veiculo;
Não seria apenas:
private String modelo;
Do jeito que vc colocou a aplicação terá atributo “veiculo” mas no banco sera “modelo”.
Cuidado com os nomes no atributo e o nome na coluna, vai causar confusão isso. hehe
Abraço!
. Na Cascate, não setando nada no relacionamento ,conseguiria impedir que ele excluisse o registro na tabela?
Vc poderia até remover o updatable=false de cima do atributo veiculo, pois lá na classe Veiculo o atributo que vc não quer que seja atualizado já está anotado.
Outra coisa:@Column(name="MODELO") private String veiculo;Não seria apenas:
private String modelo;Do jeito que vc colocou a aplicação terá atributo “veiculo” mas no banco sera “modelo”.
Cuidado com os nomes no atributo e o nome na coluna, vai causar confusão isso. hehe
Abraço!
Obrigado novamente
e sobre o Cascade??? correria o risco de ter alguma “veiculo” apagado se apagasse um Bean?
Veja o que o cascade faz:
Aí vc escolhe de acordo com o que quer fazer.
Abraço!