Mappatura Composizione in MyBatis
Domanda
Sto avendo qualche problema con una mappatura in MyBatis per Java e gradirebbe qualche aiuto. La mia struttura di classe è il seguente:
//Getters/setters omitted for clarity
class Foo
{
int id;
Bar bar;
}
class Bar {
String x;
int y;
}
Il mio tavolo assomiglia a questo -. Vale a dire che è de-normalizzata dalla struttura di classe
create table foo_bar (
id int,
x varchar,
y int
);
Il mio lavoro inserto affermazione è in grado di de-normalizzazione utilizzando (bar.x, bar.y) parametri.
<insert id="insert" parameterType="foo">
<![CDATA[
insert into foo_bar
(id, x, y) values
(#{x}, #{bar.x}, #{bar.y})
]]>
</insert>
Quindi, il problema:
Quando eseguo la mia selezione, vorrei l'oggetto risultante ad essere un'istanza di Foo che ha un riferimento a Bar.
Non credo che posso utilizzare un gestore di tipo dal momento che questo funziona su una singola colonna, ed e associazione non sembra avere senso in quanto 'Bar' non è un'entità esplicitamente rappresentato nel database tramite una relazione di chiave esterna .
Qualcuno mi può mostrare il modo consigliato di fare questo favore?
Grazie!
Soluzione
Hai provato a usare la definizione resultMap nella tua ibatis sqlmap?
<resultMap id="foobar-result" class="Foo">
<result property="id" column="id"/>
<result property="bar.x" column="x"/>
<result property="bar.y" column="y"/>
</resultMap>
e poi in voi SQL solo riferimento alla resultMap:
<select id="getFooBar" resultMap="foobar-result">