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!

È stato utile?

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">
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top