Problema com Hibernate + OneToMany + Multiplos Id's

Bom galera, tenho duas entidades mapeadas pelo Hiberante porém estou tendo um problema.
Tenho um campo na tabela que é utilizado como ID e não posso muda-lo, porém para buscar na outra tabela os seus respectivos valores(OneToMany) eu preciso utilizar outro ID e nao sei como setar multiplos Id’s, procurei tanto aqui no forum quanto em material gringo, porém nada deu muito certo.

Estou postando o básico das entidades para que alguém tente dar uma ajuda, fico no aguardo e obrigado.

Nessa entidade de logradouro tenho o GlobalID como um dos Id’s da entidade, porém eu preciso mante-lo e setar o ObjectId como a referência para os trechos.

        @Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "GLOBALID")
	@DocumentId
	private String globalid;
	
	@OneToMany(targetEntity=Trecho.class, fetch=FetchType.LAZY)
	private List<Trecho> trechos;

	@Column(name = "OBJECTID")
	private long objectid;

Nessa entidade tenho os trechos, que são ManyToOne em relação a entidade anterior. Preciso conseguir achar alguma forma de buscar os trechos de cada logradouro sem mudar aquele GlobalId como ID da entidade.

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "OBJECTID")
	private long objectid;

	@ManyToOne(fetch=FetchType.LAZY, targetEntity=Nomelog.class)
	@JoinColumn(name = "oid_log", referencedColumnName="objectid")
	private Nomelog nome;
	
	@Column(name = "OID_LOG")
	private long oidLog;

Bom, se alguém souber como, me de um toque.
Abraços.

Cara, vc não precisa de multiplos id’s. O Hibernate trabalha com objetos, então o que você precisa é informar a ele que uma entidade tem uma lista de outra entidade. Por exemplo, eu crio uma entidade Empresa, e essa tem uma lista de telefones. O mapeamento disso seria assim:

<bag cascade="all-delete-orphan" name="telefones" table="empresa_telefones">
      <key column="id_empresa"/>
      <one-to-many entity-name="modelo.empresa.Telefone"/>
</bag>

Eu uso xml pra mapear as classes, mas acho que você não vai ter problema pra transcrever em annotations.

Na classe Telefone você vai ter uma propriedade que identifica de qual empresa é o Telefone, e isso resolve o seu problema na hora das buscas.

Não sei se fui claro, mas se você não entendeu muito bem é só dar um toque.

abraço, t+

Tentei encontrar uma forma de fazer isso com annotation, porém nao consegui. Ou ele nao consegue mapear, ou ele acaba procurando pelo GlobalId.

Bom, eu não posso te ajudar com o annotations, pois não tenho experiência nele. Agora o mapeamento do jeito que eu te falei funciona muito bem, e acho que é assim que você deveria fazer. O seu principal problema é não conseguir fazer uma busca nos trechos de uma determinada entidade?

Isso mesmo, pois ele toma como default o GlobalId e passa a procura no trecho por ele, mas eu queria que ele fizesse essa procura pelo objectId mas mantivesse o GlobalId como Id da entidade, é um requisto aqui no trablaho.

É, eu não sei se tem alguma diferença nas buscas quando se usa annotations, mas eu não tenho esse problema. Consigo buscar o que eu quiser mesmo com o Id da classe sendo default.

Posta suas buscas, pode ser que o problema estejam nelas…

Bom, tentei seguir este tutorial: http://www.springbyexample.org/twiki/bin/view/Example/OneToManyJpaHibernateConfiguration#Spring_Configuration
Fiz as modificações das entidades e implementei Serializable nas entidades com o serialVersionUID gerado pelo eclipse, só que também nao foi.

Aqui está a minha query, ele continua passando o maldito do globalId para fazer a procura do trecho.

could not initialize a collection: [br.com.promaps.model.entity.Nomelog.trechos#{FC10274B-B056-40CE-8F5A-BD0336921578}] [select trechos0_.OID_LOG as OID12_1_, trechos0_.OBJECTID as OBJECTID1_, trechos0_.OBJECTID as OBJECTID4_0_, trechos0_.BAIRRO_LD as BAIRRO2_4_0_, trechos0_.BAIRRO_LE as BAIRRO3_4_0_, trechos0_.CEP_LD as CEP4_4_0_, trechos0_.CEP_LE as CEP5_4_0_, trechos0_.COD_MUN as COD6_4_0_, trechos0_.CODIGO as CODIGO4_0_, trechos0_.NUM_FD_G as NUM8_4_0_, trechos0_.NUM_FE_G as NUM9_4_0_, trechos0_.NUM_ID_G as NUM10_4_0_, trechos0_.NUM_IE_G as NUM11_4_0_, trechos0_.OID_LOG as OID12_4_0_, trechos0_.ONE_WAY as ONE13_4_0_ from FE_TRECHO trechos0_ where trechos0_.OID_LOG=?]

Alguém tem ideia?

se alguém tiver alguma ajuda, ainda estou com essa dúvida.