powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Срочный хелп по аннотациям JPA, Hibernate
5 сообщений из 5, страница 1 из 1
Срочный хелп по аннотациям JPA, Hibernate
    #38459650
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочу сделать такое.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
+Company
-int companyId
-String companyName
-Set<Department> listOfDepartments = new HashSet<Department>();

+Department
-int departmentId
-String departmentName
-Set<Worker> listOfWorkers = new HashSet<Worker>();

+Worker
-int workerId
-String workerName


Как правильно расставить аннотации. Сделал "вот так вот" :
вот так вот
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
@XmlRootElement(name="Company")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Table(name="Company")
public class Company {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute (name="id")
    @Column (name="idCompany")
    private int idCompany;

    @XmlElement(name="companyName")
    @Column (name="companyName")
    private String companyName;

    @XmlElement (name = "YYY")
    @ElementCollection
    private Set<Department> listOfDepartments = new HashSet<Department>();

@XmlRootElement(name="Department")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Embeddable
@Table(name="Department")
public class Department {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idDepartment")
    @Column (name="idDepartment")
    private int idDepartment;

    @XmlElement(name="departmentName")
    @Column (name="deparmentName")
    private String departmentName;

    @XmlElement (name = "XXX")
    @ElementCollection
    private Set<Worker> listOfWorkers = new HashSet<Worker>();

@XmlRootElement(name="Worker")
@XmlAccessorType(XmlAccessType.FIELD)
@Entity
@Embeddable
@Table(name="Worker")
public class Worker {
    @Id @GeneratedValue(strategy = GenerationType.AUTO)
    @XmlAttribute(name="idWorker")
    @Column (name = "idWorker")
    private int idWorker;

    @XmlElement(name="workerName")
    @Column (name = "workerName")
    private String workerName;


В таком раскладе ловлю ошибку:
Ошибка.LOG
Код: 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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
INFO: HHH000227: Running hbm2ddl schema export
Hibernate: alter table Company_Department drop foreign key FK_946fa76vl91dc8mu1g075bypr
Hibernate: alter table Company_Department drop foreign key FK_cadyd8waogek2oxq0fi4bi5oh
Hibernate: alter table Department_Worker drop foreign key FK_jvg51v2wbhq7mnwypc36vm03q
Hibernate: alter table Department_Worker drop foreign key FK_bpyi7snex397re1qyd9677tjt
Hibernate: drop table if exists Company
Hibernate: drop table if exists Company_Department
Hibernate: drop table if exists Department
Hibernate: drop table if exists Department_Worker
Hibernate: drop table if exists Worker
Hibernate: create table Company (idCompany integer not null auto_increment, companyName varchar(255), primary key (idCompany))
Hibernate: create table Company_Department (Company_idCompany integer not null, listOfDepartments_idDepartment integer not null, primary key (Company_idCompany, listOfDepartments_idDepartment))
Hibernate: create table Department (idDepartment integer not null auto_increment, deparmentName varchar(255), primary key (idDepartment))
Hibernate: create table Department_Worker (Department_idDepartment integer not null, listOfWorkers_idWorker integer not null, primary key (Department_idDepartment, listOfWorkers_idWorker))
Hibernate: create table Worker (idWorker integer not null auto_increment, workerName varchar(255), primary key (idWorker))
Hibernate: alter table Company_Department add constraint UK_946fa76vl91dc8mu1g075bypr unique (listOfDepartments_idDepartment)
Hibernate: alter table Department_Worker add constraint UK_jvg51v2wbhq7mnwypc36vm03q unique (listOfWorkers_idWorker)
Hibernate: alter table Company_Department add index FK_946fa76vl91dc8mu1g075bypr (listOfDepartments_idDepartment), add constraint FK_946fa76vl91dc8mu1g075bypr foreign key (listOfDepartments_idDepartment) references Department (idDepartment)
Hibernate: alter table Company_Department add index FK_cadyd8waogek2oxq0fi4bi5oh (Company_idCompany), add constraint FK_cadyd8waogek2oxq0fi4bi5oh foreign key (Company_idCompany) references Company (idCompany)
Hibernate: alter table Department_Worker add index FK_jvg51v2wbhq7mnwypc36vm03q (listOfWorkers_idWorker), add constraint FK_jvg51v2wbhq7mnwypc36vm03q foreign key (listOfWorkers_idWorker) references Worker (idWorker)
Hibernate: alter table Department_Worker add index FK_bpyi7snex397re1qyd9677tjt (Department_idDepartment), add constraint FK_bpyi7snex397re1qyd9677tjt foreign key (Department_idDepartment) references Department (idDepartment)
ноя 10, 2013 11:49:11 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
Hibernate: insert into Company (companyName) values (?)
Hibernate: insert into Company_Department (Company_idCompany, listOfDepartments_idDepartment) values (?, ?)
ноя 10, 2013 11:49:11 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
WARN: SQL Error: 1452, SQLState: 23000
ноя 10, 2013 11:49:11 PM org.hibernate.engine.jdbc.spi.SqlExceptionHelper logExceptions
ERROR: Cannot add or update a child row: a foreign key constraint fails (`test`.`company_department`, CONSTRAINT `FK_946fa76vl91dc8mu1g075bypr` FOREIGN KEY (`listOfDepartments_idDepartment`) REFERENCES `department` (`idDepartment`))
Exception in thread "main" org.hibernate.exception.ConstraintViolationException: could not execute statement
	at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:74)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:136)
	at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:58)
	at org.hibernate.persister.collection.AbstractCollectionPersister.recreate(AbstractCollectionPersister.java:1256)
	at org.hibernate.action.internal.CollectionRecreateAction.execute(CollectionRecreateAction.java:58)
	at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:393)
	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:385)
	at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:307)
	at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:339)
	at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)
	at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1240)
	at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:404)
	at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
	at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)
	at ru.eldarkaa.hibernate.Hibernate.insertIntoDB(Hibernate.java:61)
	at ru.eldarkaa.main.Main.main(Main.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`test`.`company_department`, CONSTRAINT `FK_946fa76vl91dc8mu1g075bypr` FOREIGN KEY (`listOfDepartments_idDepartment`) REFERENCES `department` (`idDepartment`))
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
	at com.mysql.jdbc.Util.getInstance(Util.java:386)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1041)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4237)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4169)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2617)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2778)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2825)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2156)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2459)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2376)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2360)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:133)
	... 19 more

...
Рейтинг: 0 / 0
Срочный хелп по аннотациям JPA, Hibernate
    #38459651
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
содержаться все чудо должно в одной таблице Company (где вложенные объекты, отображаются столбцами)
...
Рейтинг: 0 / 0
Срочный хелп по аннотациям JPA, Hibernate
    #38459652
eldarkaa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на всякий случай
вставлять собрался это:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
 Session session = sessionFactory.openSession();
        session.beginTransaction();

        Set<Worker> workersDept = new HashSet<>();
        workersDept.add(new Worker(1, "workerName1"));
        workersDept.add(new Worker(2, "workerName2"));
        workersDept.add(new Worker(3, "workerName3"));
        workersDept.add(new Worker(4, "workerName4"));

        Set<Department> departments = new HashSet<>();
        departments.add(new Department(1,"Economical",workersDept));
        departments.add(new Department(2,"Technical",workersDept));
        departments.add(new Department(3,"Mechanical",workersDept));
        departments.add(new Department(4,"Blizzard",workersDept));

        Company company = new Company(1,"MyCompanyName",departments);

        session.save(company);

        session.getTransaction().commit();
        session.close();
...
Рейтинг: 0 / 0
Срочный хелп по аннотациям JPA, Hibernate
    #38460053
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте использовать Спринг Ру.. консольно либо в иде, удобно и быстро. Никаких лишних движений.
...
Рейтинг: 0 / 0
Срочный хелп по аннотациям JPA, Hibernate
    #38460065
kT_________
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пара книг по Ру можно за два часа проглядеть.. настройка и сборка проектов, связи.. в вашем случае достаточно будет написать каким образом соотносятся сущности ..ммм веб-сервисы, куча полезного и экономящего времени, и никакого экс_эм_эль-хелла
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Срочный хелп по аннотациям JPA, Hibernate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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