У меня есть две таблицы USER_
и ORDER_
. Создал классы:
@Entity
@Table(name = "USER_")
public class User {
private long id;
private String userName;
private String password;
private String country;
private String userType;
private List<Order> orders;
public User() {
}
public User(String userName, String password, String country, String userType) {
this.userName = userName;
this.password = password;
this.country = country;
this.userType = userType;
}
public User(String userName, String password, String country, String userType, List<Order> orders) {
this.userName = userName;
this.password = password;
this.country = country;
this.userType = userType;
this.orders = orders;
}
@Id
@SequenceGenerator(name = "US_SQ", sequenceName = "USER_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "US_SQ")
@Column(name = "ID")
public long getId() {
return id;
}
@Column(name = "USER_NAME")
public String getUserName() {
return userName;
}
@Column(name = "PASSWORD")
public String getPassword() {
return password;
}
@Column(name = "COUNTRY")
public String getCountry() {
return country;
}
@Column(name = "USER_TYPE")
public String getUserType() {
return userType;
}
@OneToMany(targetEntity = Order.class, mappedBy = "user", fetch = FetchType.LAZY)
public List<Order> getOrders() {
return orders;
}
и
@Entity
@Table(name = "ORDER_")
public class Order {
private long id;
private User user;
private Room room;
private Date dateFrom;
private Date dateTo;
private double moneyPaid;
public Order() {
}
@Id
@SequenceGenerator(name = "ORDER_SQ", sequenceName = "ORDER_SEQ", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ORDER_SQ")
@Column(name = "ID")
public long getId() {
return id;
}
@ManyToOne
@JoinColumn(name = "ID_USER")
public User getUser() {
return user;
}
@OneToOne(optional = false, cascade = CascadeType.ALL)
@JoinColumn(name = "ID_ROOM")
public Room getRoom() {
return room;
}
@Temporal(TemporalType.DATE)
@Column(name = "DATE_FROM")
public Date getDateFrom() {
return dateFrom;
}
@Temporal(TemporalType.DATE)
@Column(name = "DATE_TO")
public Date getDateTo() {
return dateTo;
}
@Column(name = "MONEY_PAID")
public double getMoneyPaid() {
return moneyPaid;
}
Так же есть класс GeneralDAO<T>
в котором метод сохранения объекта в базу, не привожу его здесь, так как он вполне рабочий. В Demo
создаю объект user
и сохраняю его в базу userGeneralDAO.save(user1);
и тут падает ошибка:
"C:\Program Files\Java\jdk1.8.0_111\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1\lib\idea_rt.jar=57967:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_111\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_111\jre\lib\rt.jar;C:\Users\Skorodielov\IdeaProjects\javajdbcgrom\target\classes;C:\Users\Skorodielov\.m2\repository\com\oracle\ojdbc7\12.1.0\ojdbc7-12.1.0.jar;C:\Users\Skorodielov\.m2\repository\org\hibernate\hibernate-core\5.2.16.Final\hibernate-core-5.2.16.Final.jar;C:\Users\Skorodielov\.m2\repository\org\jboss\logging\jboss-logging\3.3.1.Final\jboss-logging-3.3.1.Final.jar;C:\Users\Skorodielov\.m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar;C:\Users\Skorodielov\.m2\repository\org\javassist\javassist\3.22.0-GA\javassist-3.22.0-GA.jar;C:\Users\Skorodielov\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\Skorodielov\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.0.1.Final\jboss-transaction-api_1.2_spec-1.0.1.Final.jar;C:\Users\Skorodielov\.m2\repository\org\jboss\jandex\2.0.3.Final\jandex-2.0.3.Final.jar;C:\Users\Skorodielov\.m2\repository\com\fasterxml\classmate\1.3.0\classmate-1.3.0.jar;C:\Users\Skorodielov\.m2\repository\dom4j\dom4j\1.6.1\dom4j-1.6.1.jar;C:\Users\Skorodielov\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.0.1.Final\hibernate-commons-annotations-5.0.1.Final.jar" hibernate_dz.dz_lesson4.demo.UserDemo
мая 18, 2018 10:23:04 AM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {5.2.16.Final}
мая 18, 2018 10:23:04 AM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
мая 18, 2018 10:23:04 AM org.hibernate.boot.jaxb.internal.stax.LocalXmlResourceResolver resolveEntity
WARN: HHH90000012: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/hibernate-configuration. Use namespace http://www.hibernate.org/dtd/hibernate-configuration instead. Support for obsolete DTD/XSD namespaces may be removed at any time.
мая 18, 2018 10:23:05 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
мая 18, 2018 10:23:05 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
WARN: HHH10001002: Using Hibernate built-in connection pool (not for production use!)
мая 18, 2018 10:23:05 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001005: using driver [oracle.jdbc.driver.OracleDriver] at URL [jdbc:oracle:thin:@gromcode-lesson.cjqbbseqr63c.eu-central-1.rds.amazonaws.com:1521:ORCL]
мая 18, 2018 10:23:05 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001001: Connection properties: {user=main, password=****}
мая 18, 2018 10:23:05 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH10001003: Autocommit mode: false
мая 18, 2018 10:23:05 AM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl$PooledConnections <init>
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
мая 18, 2018 10:23:07 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.Oracle10gDialect
Save is failed
Collection has neither generic type or OneToMany.targetEntity() defined: hibernate_dz.dz_lesson4.model.Hotel.rooms
Process finished with exit code -1
Подскажите как её исправить ? И в аннотации OneToMany
параметр mappedBy =
должно быть название таблицы или наименование колонки, которая является внешним ключом для связи таблиц USER_
и ORDER_
?
mappedBy должен указывать на поле класса, с которым связывается этот класс.
А ошибка у вас указывает на поле rooms класса Hotel.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Хочу из контроллера вернуть json-строку List, но объекты в json сериализуются как пустые строкиВ результате получаю [{},{}]
На активности в TextView передается довольно большой объем текстаКогда его становится слишком много он уходит "вниз", но активность прокрутить...
При просмотре со смартфона тормозит прокрутка 3 и 7 экранов, в которых находится форма с десятью инпутамиСсылка на сайт http://продатьвелосипед