Boa tarde,
Sou iniciante em Hibernate e estou trabalhando com um sistema legado que utiliza apenas Hibernate sem JPA utilizando mapeamento xml.
No momento estou trabalhando com esse relacionamento muitos-para-muitos do link abaixo:
O mapeamento dessas entidades segue abaixo:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xxxx.model">
<class lazy="false" name="com.xxxxxx.model.Terminal" table="TERMINAL">
<id column="ID" name="id" type="java.lang.Integer">
<generator class="assigned" />
</id>
<property column="NAME" length="60" name="name" type="java.lang.String" />
<property column="TERMINAL_KEY" name="terminalKey" length="120" type="java.lang.String" />
<property column="OPENING_BALANCE" length="52" name="openingBalance" type="java.lang.Double" />
<property column="CURRENT_BALANCE" length="52" name="currentBalance" type="java.lang.Double" />
<property column="HAS_CASH_DRAWER" name="hasCashDrawer" type="java.lang.Boolean" />
<property column="IN_USE" name="inUse" type="java.lang.Boolean" />
<property column="ACTIVE" name="active" type="java.lang.Boolean" />
<property column="LOCATION" name="location" length="320" type="java.lang.String" />
<property column="FLOOR_ID" name="floorId" type="java.lang.Integer" />
<!-- Associations -->
<many-to-one class="com.xxxxxx.model.User" lazy="false" name="assignedUser">
<column name="ASSIGNED_USER" />
</many-to-one>
<set name="terminalPrinters" table="terminal_printers" inverse="true" lazy="true" fetch="select">
<key>
<column name="ID" not-null="true" />
</key>
<one-to-many class="com.xxxxxx.model.TerminalPrinters" />
</set>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xxxxx.model">
<class lazy="false" name="com.xxxxx.model.TerminalPrinters" table="TERMINAL_PRINTERS">
<id column="ID" name="id" type="java.lang.Integer">
<generator class="identity" />
</id>
<many-to-one class="com.xxxxxx.model.Terminal" cascade="none" lazy="false" name="terminal">
<column name="TERMINAL_ID" />
</many-to-one>
<property column="PRINTER_NAME" name="printerName" type="string" length="60" />
<many-to-one class="com.xxxxxxx.model.VirtualPrinter" cascade="none" lazy="false" name="virtualPrinter">
<column name="VIRTUAL_PRINTER_ID" />
</many-to-one>
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xxxxx.model">
<class lazy="false" name="com.xxxxxxx.model.VirtualPrinter" table="VIRTUAL_PRINTER">
<id column="ID" name="id" type="java.lang.Integer">
<generator class="identity" />
</id>
<property column="NAME" name="name" type="string" unique="true" length="60" not-null="true" />
<property column="TYPE" name="type" type="java.lang.Integer"/>
<bag name="orderTypeNames" table="VIRTUALPRINTER_ORDER_TYPE" lazy="false" cascade="all">
<key column="printer_id" />
<element column="ORDER_TYPE" type="string" />
</bag>
<property column="PRIORITY" name="priority" type="java.lang.Integer"/>
<property column="ENABLED" name="enabled" type="java.lang.Boolean"/>
</class>
</hibernate-mapping>
No sistema que estou trabalhando apenas 1 registro de terminal vai usar o "many-to-many" e os outros terminais devem estar em um relacionamento 1 pra 1, ou seja, 1 terminal pra 1 terminal_printers.
Eu sei, parece uma gambiarra...mas eu só gostaria de saber se é possível fazer isso pois não tenho a menor ideia de como implementar....
A ideia é que apenas 1 tipo de terminal(esse controle de tipo seria pelo nome do terminal que não mudaria) pudesse ter várias impressoras e os outros terminais pudessem ter apenas 1....
Alguém tem alguma ideia de como eu poderia implementar isso? Sei que parece uma gambiarra mas o sistema é um legado que queremos alterar o mínimo possível...