[Resolvido] Id como String [Hibernate]

3 respostas
PANIC

Saudações,

Tenho um relacionamento manyToOne em que a tabela secundaria tem como chave primária um campo do tipo String.
Quando eu salvo o objeto principal com esse relacionamento nulo, ele grava no campo String vazia ao invés de null, ai quando faço um select em cima do objeto principal, ocorre erro pois ele tenta fazer um load do objeto secundario cuja chave primária seja igual a String vazia…

ProfissionalDTO

@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="cidade",insertable=false, updatable=false, nullable = true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.PERSIST)
	private CidadeDTO cidade;

CidadeDTO

@Id
	@Column(name = "cidade")
	private String cidade;

trocando em miudos, eu salvo um profissional com a cidade = null, porem no banco, o campo cidade fica como string vazia ao inves de null.
quando faço um select em cima do profissionalDTO, mesmo que seja sem join, ele tenta fazer um load da cidade, procurando pela string vazia…

como posso proceder nesse caso?

3 Respostas

_fs

Se não me engano faltam dois atributos na chave, “generator=assigned” e “unsaved-value=null”.

PANIC

Saberia me dizer onde eu seto o unsaved-value? pq pelo que vi até agora, nao há anotação para unsaved-value, =/

PANIC

Resolvi o problema,
bastou usar a anotação @NotFound(action=NotFoundAction.IGNORE)

@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="cidade",insertable=false, updatable=false, nullable = true)
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.PERSIST)
	@NotFound(action=NotFoundAction.IGNORE)
	private CidadeDTO cidade;

obrigado

Criado 22 de agosto de 2007
Ultima resposta 23 de ago. de 2007
Respostas 3
Participantes 2