Mapear dois atributos para a mesma entidade com hibernate

Estou com dúvida para mapear a seguinte situação com annotations do hibernate 3.2 e java 6

[quote]Tabela A (
id
valor )

Tabela B (
id
a_1_id
a_2_id )
[/quote]

class A {
    @Id
    @GeneratedValue( strategy = GenerationType.AUTO )
    private int id;

    private int valor;

    @OneToMany( cascade = { CascadeType.ALL } )
    @org.hibernate.annotations.Cascade( value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN )
    private List<B> bs;

    // gets / sets
}

class B {
    @Id
    @GeneratedValue( strategy = GenerationType.AUTO )
    private int id;

    @ManyToOne
    @JoinColumn( name="a_1_id", nullable = false )
    private A a1;

    @ManyToOne
    @JoinColumn( name="a_2_id", nullable = false )
    private A a2;

    // gets / sets
}

Quando tento carregar a aplicação ocorre o seguinte erro

Alguém poderia me ajudar?

Nunca tive uma situação destas, mas, repara, como que o Hibernate vai conseguir construir a lista dos Bs em A (private List bs; ), se tem dois IDs do A em B !?!?

Tenta fazer assim no A:

    @OneToMany
    @JoinColumn(name="a1")
    private List<B> bs;

Mesmo com esta alteração a mensagem de erro é a mesma.

O “A” é o controlador da associação, as entidades “B” quando são criadas, apenas apontam para algum “A” previamente criado.
Este sistema já existia, só que era feito com JDBC. Estou passando para hibernate pq o sistema começou a ter problemas de performance na consulta de dados.