powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate связи между таблицами
5 сообщений из 5, страница 1 из 1
Hibernate связи между таблицами
    #38943070
goldenhawk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два класса

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
public class User {
 
	private Integer id;
 	private String name;
 	private Set<Order> orders=new  HashSet<Order>();
	
 	public Set<Order> getOrders() {
 		return orders;
 	}

	 public void setOrders(Set<Order> orders) {
	 this.orders = orders;
	 }
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	public User() {
		
	}
	public User(Integer id, String name) {
		
		this.id = id;
		this.name = name;
	}
}





Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
public class Order  {
	 
	private Integer id;
	private Integer id_user;
	private String item;

	public Order() {
	}
		
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getId_user() {
		return id_user;
	}
	public void setId_user(Integer id_user) {
		this.id_user = id_user;
	}
	public String getItem() {
		return item;
	}
	public void setItem(String item) {
		this.item = item;
	}
	 	
}



два маппинга xml

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<hibernate-mapping>
    <class name="com.mycompany.User" table="USERS">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="identity" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="20" />
        </property>
       <set name="orders" table="ORDERS" inverse="true" lazy="true" fetch="select">
            <key>
                <column name="ID" not-null="true" />
            </key>
            <one-to-many class="com.mycompany.Order" />
        </set>
    </class>
</hibernate-mapping>






Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<hibernate-mapping>
    <class name="com.mycompany.Order" table="ORDERS">
        <id name="id" type="java.lang.Integer">
            <column name="ID" />
            <generator class="identity" />
        </id>
       
        <property name="id_user" type="java.lang.Integer">
            <column name="ID_USER" />
        </property>
       
        <property name="item" type="java.lang.String">
            <column name="ITEM" />
        </property>
       
    </class>
</hibernate-mapping>



Работаю в Hibernate

Как создать связь один ко многим между таблицами.(У одного usera может быть несколько Orders)

Как я понял в классе user мы делаем атрибут private Set<Order> orders;
А в классе Orders как?

и что мы делаем в xml файлах?

Помогите, только учусь еще.
Спасибо!
...
Рейтинг: 0 / 0
Hibernate связи между таблицами
    #38943208
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
goldenhawkКак создать связь один ко многим
тут в форуме полно Рабочих заготовок, поищи....запусти...протести
...
Рейтинг: 0 / 0
Hibernate связи между таблицами
    #38943221
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не брезгуйте читать официальный мануал. Он очень детальный и в тоже время написан доступно.
В главе про ассоциации есть ответы на все ваши вопросы.
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/associations.html

goldenhawk Как создать связь один ко многим между таблицами.(У одного usera может быть несколько Orders)
Как я понял в классе user мы делаем атрибут private Set<Order> orders;

Сам спросил, сам ответил. Вот только с терминологией беда.
private Set<Order> orders это объявление поля класса User.
orders это свойство сущности User с точки зрения Hibernate ORM
Методы аккцессоры getOrders и setOrders формируют так же свойство бина (JavaBean) User.


авторА в классе Orders как?Как создать связь один ко многим между таблицами.(У одного usera может быть несколько Orders)

1. Можно не создавать никак. Односторонние связи допустимы.
2. Можно добавить поле\свойство user. И, скорее всего, нужно. Свойство id_user избыточно и его стоит убрать.
3. А вот, действительно ли вам нужно свойство User.orders - это вопрос открытый. Количество заказов со временем растет. Заказы обрабатываются в порядке очереди, или как-то ещё, но не отдельно по пользователям. Пригодится User.orders может разве что в отчетах. Но для отчетов Hibernate использовать ИМХО, вредно.
...
Рейтинг: 0 / 0
Hibernate связи между таблицами
    #38943253
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Плюс к вышесказанному: в меппинге, что на стороне one-to-many, что на стороне many-to-one следует указывать название столбца для внешнего ключа в подчиненной таблице. Сейчас указано
Код: xml
1.
2.
3.
            <key>
                <column name="ID" not-null="true" />
            </key>


- совпадает с названием PK для ORDERS. Аннотации в этом смысле более выразительны (@JoinColumn)
...
Рейтинг: 0 / 0
Hibernate связи между таблицами
    #38943266
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanra,

Точно. Совсем забыл упомянуть аннотации. Про них в мануале тоже жирно отписано
https://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate связи между таблицами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]