- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 Hibernate 实体生成 sql 模式。这是我的实体:
学生实体
@Entity
@Table(name = "address")
public class Address {
@Id
private long id;
@Column(name = "address")
private String address;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@OneToOne (mappedBy="student")
private Student student;
public Address(){
}
public Address(String address, String city, String state,
String country) {
this.address = address;
this.city = city;
this.state = state;
this.country = country;
}
getter 和 setter
}
地址实体
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue
@Column(name = "student_id")
private long id;
@Column(name = "first_name")
private String firstName;
@Column(name = "last_name")
private String lastName;
@Column(name = "email")
private String email;
@Column(name = "phone")
private String phone;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="ADDRESS_ID")
private Address address;
public Student(){
}
public Student(String firstName, String lastName, String email, String phone) {
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
this.email = email;
}
+ getters and setters
}
生成模式类
public class SchemaGenerator {
private Configuration cfg;
@SuppressWarnings("rawtypes")
public SchemaGenerator(String packageName) throws Exception {
cfg = new Configuration();
cfg.setProperty("hibernate.hbm2ddl.auto", "create");
for (Class clazz : getClasses(packageName)) {
cfg.addAnnotatedClass(clazz);
}
}
public static void main(String[] args) throws Exception {
//final String packageName = args[0];
final String packageName ="com.startup.app.models.entities";
SchemaGenerator gen = new SchemaGenerator(packageName);
// final String directory = args[1];
final String directory = "E:\\Informatique\\workspace\\startup\\src\\main\\resources\\sql\\";
gen.generate(Dialect.MYSQL, directory);
gen.generate(Dialect.POSTGRESQL, directory);
}
private List<Class> getClasses(String packageName) throws Exception {
File directory = null;
try {
ClassLoader cld = getClassLoader();
URL resource = getResource(packageName, cld);
directory = new File(resource.getFile());
} catch (NullPointerException ex) {
throw new ClassNotFoundException(packageName + " (" + directory
+ ") does not appear to be a valid package");
}
return collectClasses(packageName, directory);
}
private ClassLoader getClassLoader() throws ClassNotFoundException {
ClassLoader cld = Thread.currentThread().getContextClassLoader();
if (cld == null) {
throw new ClassNotFoundException("Can't get class loader.");
}
return cld;
}
private URL getResource(String packageName, ClassLoader cld) throws ClassNotFoundException {
String path = packageName.replace('.', '/');
URL resource = cld.getResource(path);
if (resource == null) {
throw new ClassNotFoundException("No resource for " + path);
}
return resource;
}
private List<Class> collectClasses(String packageName, File directory) throws ClassNotFoundException {
List<Class> classes = new ArrayList<Class>();
if (directory.exists()) {
String[] files = directory.list();
for (String file : files) {
if (file.endsWith(".class")) {
// removes the .class extension
classes.add(Class.forName(packageName + '.'
+ file.substring(0, file.length() - 6)));
}
}
} else {
throw new ClassNotFoundException(packageName
+ " is not a valid package");
}
return classes;
}
private void generate(Dialect dialect, String directory) {
cfg.setProperty("hibernate.dialect", dialect.getDialectClass());
SchemaExport export = new SchemaExport(cfg);
export.setDelimiter(";");
export.setOutputFile(directory + "ddl_" + dialect.name().toLowerCase() + ".sql");
export.setFormat(true);
export.execute(true, false, false, false);
}
private static enum Dialect {
MYSQL("org.hibernate.dialect.MySQLDialect"),
POSTGRESQL("org.hibernate.dialect.PostgreSQLDialect");
private String dialectClass;
private Dialect(String dialectClass) {
this.dialectClass = dialectClass;
}
public String getDialectClass() {
return dialectClass;
}
}
}
但我不明白为什么当我尝试生成架构时出现以下错误:
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Exception in thread "main" org.hibernate.AnnotationException: Unknown mappedBy in: com.davy.app.domain.onetoone.one.entities.Address.student, referenced property unknown: com.davy.app.domain.onetoone.one.entities.Student.student
at org.hibernate.cfg.OneToOneSecondPass.doSecondPass(OneToOneSecondPass.java:158)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1586)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1359)
at org.hibernate.cfg.Configuration.generateDropSchemaScript(Configuration.java:927)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:189)
at org.hibernate.tool.hbm2ddl.SchemaExport.<init>(SchemaExport.java:157)
at com.davy.app.domain.utils.SchemaGenerator.generate(SchemaGenerator.java:103)
at com.davy.app.domain.utils.SchemaGenerator.main(SchemaGenerator.java:36)
最佳答案
您正在尝试更改相同的表名“student”
@Table(name = "student")
另一个名字,比如
@Table(name = "address")
在类(class)地址。
关于java - hibernate 4 : Why i am getting the AnnotationException : Unknown mappedBy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22017347/
我对 OneToMany 注释有疑问 @Entity @Table(name = "RESULT_HISTORY") public class ResultHistoryImpl implements
我正在尝试用元素制作购物车。一个用户有多个项目,所以我这样做:我有一个 @Entity @Table 类 Item,它实现了 Serialized private User user; ... @Id
mvn clean install 工作正常,没有任何错误,但是当我启动 tomcat6 时,出现以下错误: 原因: org.hibernate.AnnotationException: Use of
我正在尝试使用 DoctrineMongoDBBundle,但是,我遇到了问题。 在我的 config.yml 中,我有: doctrine_mongodb: connections:
他似乎在通信代码中添加了@OneToMany和@ManyToOne,但由于某种原因,在启动Spring应用程序时出现错误. 类(class)客户: import com.fasterxml.jacks
我试图建立一对一的关系。但我得到错误: AnnotationException Referenced property not a (One|Many)ToOne on com.student.inf
我正在尝试使用注释进行一对一关系。 这是代码。 package test.hibernate; @Entity @Table(name="EMPLOYEE") public class Employe
我使用Spring Boot 2.0.0.RC1,Hibernate最新版本。文件persistence.xml com.donhuvy.entity.SysReportL
我正在尝试从 Hibernate 实体生成 sql 模式。这是我的实体: 学生实体 @Entity @Table(name = "address") public class Address {
我是 Spring-Hibernate 技术的新手,在将 Spring MVC 与 Hibernate 集成以处理两个类的关系时面临问题。下面是代码: 用户类: package com.MVCHibe
我有一个 groovy 实体 ClientInvoiceAttachmentExt,它扩展了 java 实体 ClientInvoiceAttachment。 ClientInvoiceAttachm
我需要建立一对多关系,但出现此错误mappedBy 引用了一个未知的目标实体属性这是父 Caused by: org.hibernate.AnnotationException: mappedBy r
我正在开始一个新项目,这是我第一次使用 Hibernate 4 并在没有 hibernate 模板的情况下使用 Spring 3。 这是我的两个实体类:(这似乎发生在所有实体类上) /** * Tw
我正在尝试在包级别创建一个 @GenericGenerator 注释,以便包中的所有实体都可以使用它。 1)我有一个带有注释的 package-info.java 类: @org.hibernate.
我已经完成了我的代码,就像在谷歌的例子中一样。我试图建立一对一的关系。但我收到错误:AnnotationException 引用的属性不是 (One|Many)ToOne 问题 : 怎么了? @Ent
我已经看到很多关于同一论点的问题,但我没有找到任何解决方案。我有两个继承同一个类的类。 基本上: @MappedSuperclass public abstract class MyGeneric {
我想在hibernate中进行一对多映射,但它显示异常,我尝试了很多但找不到解决方案 我有下面两张表 部门 deptno -- 数字主键 dname -- varchar2(10) loc -- va
我尝试使用 springboot、hibernate 和 mysql 运行休息服务器,但是当我运行它时出现以下错误: [main] ERROR org.springframework.boot.Spr
嗨,我刚刚创建了一个应用程序,它通过一对一映射保存表中的数据 每当我尝试将数据保存在表中时,我都会收到以下错误。 `Exception in thread "main" org.hibernate.A
我有以下配置: org.hibernate
我是一名优秀的程序员,十分优秀!