В Eclipse с использованием Hibernate с базой данных MySQL, У меня многие ко многим отношений между двумя таблицами Profile
и Fonctionnalite
и результирующей таблицей был T_PROFILE_FONCTIONNALITE
с составным первичным ключом. Я хочу вставить новую запись в T_PROFILE_FONCTIONNALITE
.Hibernate HQL Query вставить
Это соответствующие классы в файле hbm.xml:
<class name="Fonctionnalite" table="T_FONCTIONNALITE" dynamic-update="false" dynamic-insert ="false">
<id name="code" column="CODE" type="java.lang.String"/>
<property name="libelle" column="LIBELLE" type="java.lang.String"/>
<property name="url" column="URL" type="java.lang.String"/>
<bag name="profiles" cascade="none" table="T_PROFILE_FONCTIONNALITE" lazy ="true" inverse="true">
<key column="CODE_FONCTIONNALITE" />
<many-to-many class="Profile" column="CODE_PROFILE" unique="true"/>
</bag>
</class>
<class name="Profile" table="T_PROFILE" dynamic-update="true">
<id name="code" column="CODE" type="java.lang.String"/>
<property name="libelle" column="LIBELLE" type="java.lang.String"/>
<property name="estFonctionnalitesUpdate" column="UPDATED" type="yes_no"/>
<bag name="menus" cascade="all" table="T_PROFILE_FONCTIONNALITE" lazy ="true" inverse="true">
<key column="CODE_PROFILE" />
<many-to-many class="Fonctionnalite" column="CODE_FONCTIONNALITE" unique="true" where="URL is not null" />
</bag>
</class>
Я попытался добавить следующую организацию для таблицы T_PROFILE_FONCTIONNALITE:
<class name="proFonc" table="T_PROFILE_FONCTIONNALITE" dynamic-update="false" dynamic-insert ="false">
<composite-id>
<key-many-to-one name="codepro" entity-name="Profile" foreign-key="code" column="CODE_PROFILE"></key-many-to-one>
<key-many-to-one name="codefonc" entity-name="Fonctionnalite" foreign-key="code" column="CODE_FONCTIONNALITE"></key-many-to-one>
</composite-id>
</class>
Я получил это исключение:
An association from the table T_PROFILE_FONCTIONNALITE refers to an unmapped class: Fonctionnalite
Другой проблемой является h чтобы написать сам запрос.
Это метод предпочитаемого here
String hql = "INSERT INTO Employee(firstName, lastName, salary)" +
"SELECT firstName, lastName, salary FROM old_employee";
Query query = session.createQuery(hql);
int result = query.executeUpdate();
System.out.println("Rows affected: " + result);
Но я имел обыкновение делать запросы с параметрами, как:
<query name="insertpf" type="hql" >
<body>
<![CDATA[
insert into proFonc values
]]>
</body>
<body param="proid">
<![CDATA[
(proid ,
]]>
</body>
<body param="foncid">
<![CDATA[
foncid)
]]>
</body>
</query>
Конечно, это синтаксический неправильно, потому что я создал его, пожалуйста, помогите мне если я не использую select, ни сеанс, чтобы получить значения, которые нужно вставить, потому что я их в переменных. спасибо.