|
Срочный хелп по аннотациям JPA, Hibernate
#38459650
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
|
Участник
Откуда: Moscow
Сообщения: 234
|
|
Хочу сделать такое.
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
Как правильно расставить аннотации. Сделал "вот так вот" :
вот так вот
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 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
|
|
|