Mysql
 sql >> база данни >  >> RDS >> Mysql

Хибернация Запазете странно поведение

Най-големият ви проблем е неправилната колона в <key> mapping - трябва да бъде "user_id", а не "id". Въпреки това цялото ви картографиране ми изглежда малко странно.

На първо място, ако искате автоматично генерирани идентификационни номера, наистина трябва да оставите Hibernate да се погрижи за това, като посочите подходящ генератор:

 <id column="id" name="id">
   <generator class="native"/>
 </id>

Прочетете Документацията за хибернация на генератори за различни налични опции.

Второ, ако всичко, от което се нуждаете, е набор от типове низове, помислете за повторното им съпоставяне в колекция от елементи, а не във връзка един към много:

 <set name="types" table="types">
    <key column="user_id"/>
    <element column="type" type="string"/>
 </set> 

По този начин няма да имате нужда от изричен клас "Типове" или съпоставяне за него. Дори ако искате да имате допълнителни атрибути на "Типове", все пак можете да го картографирате като компонент, а не като обект.

И накрая, ако „Типове“ трябва да е обект поради някакво изискване, което не сте описали, връзката между „Потребители“ и „Типове“ е двупосочна и трябва да бъде картографирана като такава:

 <set name="types" table="types" inverse="true">
    <key column="user_id"/>
    <one-to-many class="Types"/>
 </set>

 ...
 in Types mapping:
 <many-to-one name="user" column="user_id" not-null="true"/>

В последния случай „Types“ ще трябва да има свойство „user“ от тип „Users“.Тук е подробен пример.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Какъв е еквивалентът на DATALENGTH() в MySQL?

  2. MySQL ALTER TABLE на много голяма таблица - безопасно ли е да я стартирате?

  3. Как да съхранявате URL адреси в MySQL

  4. Добавете персонализирано скрито поле във формата на paypal и го вземете на пренасочена страница

  5. Съхранявайте PDF файл в MySQL