标签: hibernate-annotations

Hibernate buildSessionFactory()异常

我有一个严重的hibernate问题.我遵循各种书籍和在线教程,但我得到了与HibernateUtil.java线明显抛出相同的异常"ExceptionInInitializerError"

SessionFactory sf = cfg.configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

我的Tomcat日志说明如下:

Caused by: java.lang.ExceptionInInitializerError
at de.marcelstuht.nerven2.server.HibernateUtil.buildSessionFactory(HibernateUtil.java:23)
at de.marcelstuht.nerven2.server.HibernateUtil.<clinit>(HibernateUtil.java:8)
at de.marcelstuht.nerven2.shared.model.Account.<init>(Account.java:52)
at de.marcelstuht.nerven2.server.GreetingServiceImpl.loginServer(GreetingServiceImpl.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
... 21 more

Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:180)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:131)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:345)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
at de.marcelstuht.nerven2.server.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
... 29 more

Caused by: org.hibernate.InstantiationException: could not instantiate test objectde.marcelstuht.nerven2.shared.model.Account
at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:49)
at org.hibernate.engine.internal.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:68)
at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:75)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:143)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:498)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:142)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) …
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-annotations

8
推荐指数
1
解决办法
3万
查看次数

org.hibernate.AnnotationException:未知的mappedBy in:error

我正在尝试使用注释的一对一关系.
这是代码.

package test.hibernate;

@Entity
@Table(name="EMPLOYEE")

public class Employee {
    @Id
    @GeneratedValue
    @Column(name="EMP_ID")
    private Long empID;

    @Column(name="fName")
    private String fName;

    @Column(name="lName")
    private String lName;

    @OneToOne(mappedBy="employee", cascade=CascadeType.ALL)
    private Address address;


    public Employee(/* Long empID, */String fName, String lName) {
        super();
        // this.empID = empID;
        this.fName = fName;
        this.lName = lName;
    }

    public Employee() {
        super();
    }

    public Long getEmpID() {
        return empID;
    }

    public void setEmpID(Long empID) {
        this.empID = empID;
    }

    public String getfName() {
        return fName;
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-annotations

8
推荐指数
1
解决办法
1万
查看次数

Hibernate - 调用getter of model时发生了IllegalArgumentException

我的hibernate模型出现了这个错误,我无法弄清楚是什么问题.

Tag.java:

@Entity
@Table(name = "tag")
public class Tag implements java.io.Serializable {
    private Integer idTag;
    private String name;
    private Set<Question> questions = new HashSet<Question>(0);

    @Id
    @GeneratedValue(strategy = IDENTITY)
    @Column(name = "idtag", unique = true, nullable = false)
    public Integer getIdTag() {
        return this.idTag;
    }

    public void setIdTag(Integer idtag) {
        this.idTag = idtag;
    }

    [...]

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "tag")
    public Set<Question> getQuestions() {
        return this.questions;
    }

    public void setQuestions(Set<Question> questions) {
        this.questions = questions;
    }

}
Run Code Online (Sandbox Code Playgroud)

Question.java:

@Entity
@Table(name …
Run Code Online (Sandbox Code Playgroud)

java mysql inheritance hibernate hibernate-annotations

8
推荐指数
1
解决办法
1万
查看次数

存在于多个目录中的实体的Hibernate注释

我有一个由Hibernate映射到数据库目录"Active"中的数据库表的Person实体.经过一段时间后,"Active"目录中此数据库表中的记录将归档/移动到数据库目录"历史记录"中表的精确副本.我需要从活动目录和历史目录中检索.有没有更好的方法来使用Hibernate注释对此进行建模,而不是创建一个2类扩展的抽象类.

这就是我现在拥有的.

@MappedSuperclass
public abstract class Person  {

    @Id
    private Integer id;
    private String name;
}

@Entity
@Table(name="Person", catalog="Active")
public class PersonActive extends Person {
}

@Entity
@Table(name="Person", catalog="History")
public class PersonHistory extends Person {
}
Run Code Online (Sandbox Code Playgroud)

java orm hibernate hibernate-annotations

7
推荐指数
1
解决办法
2153
查看次数

Hibernate注释多对一,不将子项添加到父集合

我有以下带注释的Hibernate实体类:

@Entity
public class Cat {
    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id
    private Long id;

    @OneToMany(mappedBy = "cat", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private Set<Kitten> kittens = new HashSet<Kitten>();

    public void setId(Long id) { this.id = id; }
    public Long getId() { return id; }
    public void setKittens(Set<Kitten> kittens) { this.kittens = kittens; }
    public Set<Kitten> getKittens() { return kittens; }
}

@Entity
public class Kitten {
    @Column(name = "ID") @GeneratedValue(strategy = GenerationType.AUTO) @Id
    private Long id;

    @ManyToOne(cascade …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa many-to-one hibernate-annotations

7
推荐指数
1
解决办法
9254
查看次数

如何让Hibernate调用我的自定义typedef?

我正在尝试定义一个CompositeUserType来处理我的JPA/Hibernate应用程序中的特定类型.我有一个名为ApplicationMessageType的CompositeUserType,用于处理我的映射.

根据我读过的内容,我应该能够在包含TypeDef的域层次结构中创建一个package-info.java类.我看起来像这样:

@TypeDefs({
    @TypeDef(
        defaultForType = ApplicationMessage.class,
        typeClass = ApplicationMessageType.class
    )
})
package mptstp.domain;

import mptstp.domain.messages.ApplicationMessage;

import org.hibernate.annotations.TypeDef;
import org.hibernate.annotations.TypeDefs;
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我正在使用DefaultDeType参数到TypeDef这一事实,无论何时我尝试保存或加载ApplicationMessage,都应该调用自定义类型代码.

我已经在ApplicationMessageType类中的每个方法上设置了断点,并且没有一个 被调用.

有谁知道我哪里出错了?代码编译,但似乎从未调用TypeDef注释来注册ApplicationMessageType.

任何指针将不胜感激......

谢谢

annotations hibernate typedef hibernate-annotations

7
推荐指数
1
解决办法
1万
查看次数

Hibernate 4注释配置

我正在尝试使用仅带注释的Hibernate 4和一个hibernate.cfg.xml文件.我已经制作了自己的注释,并使用反射将其添加到配置中.我能够以这种方式使用Hibernate 4,但我的配置是使用不推荐的方法构建的.

final Configuration configuration = new Configuration();
final Reflections reflections = new Reflections(Item.class.getPackage().getName());
final Set<Class<?>> classes = reflections.getTypesAnnotatedWith(Entity.class);
for (final Class<?> clazz : classes) {
    configuration.addAnnotatedClass(clazz);
}
return configuration.configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

(不推荐的代码:) buildSessionFactory();.

即使是hibernate 4文档也显示以这种方式构建配置.

如果我尝试使用新方法(buildSessionFactory(ServiceRegistry)我没有得到相同的结果,似乎有很多不必要的代码完全按照不推荐使用的方法做的那样.但是,我不想继续使用这种风格,因为我不喜欢使用已弃用的代码.

我的问题是:如何以上述方式从配置文件中正确配置Hibernate 4?我似乎只是造成错误并面临不必要的困难.

java hibernate hibernate.cfg.xml hibernate-annotations hibernate-4.x

7
推荐指数
1
解决办法
6276
查看次数

@ManyToOne和@BatchSize

我在一些旧代码中找到了奇怪的东西(至少对我而言).

注释的字段@ManyToOne也带有注释@BatchSize.

我一直认为@BatchSize注释只会影响在类级别或集合(@OneToMany)上进行注释,并影响迭代时的预取.

但是,也许我错了,并标注@ManyToOne@BatchSize影响的东西.我在文档中找不到答案.

注释是否@ManyToOne@BatchSize有感觉?

java hibernate hibernate-mapping hibernate-annotations

7
推荐指数
2
解决办法
2万
查看次数

Hibernate命名策略

我正在使用Spring(Boot)构建REST Web服务,并尝试使用hibernate作为orm mapper而不使用任何xml配置.

我基本上可以使用它,但我遇到了配置问题.我实例LocalContainerEntityManagerFactoryBean作为@Bean一个@Configuration文件.

hibernate.ejb.naming_strategy在下面的例子中设置 - >这似乎适用于创建表,如果它们不存在(列名是像我的@Entity类中的camelCase)但是当执行查询时,hibernate"忘记"关于这个命名配置和尝试使用另一种命名策略与under_score_attributes - >显然这些查询失败.我需要设置其他任何属性吗?

或者另一种配置属性的方法,最好不要添加cfg.xml或者persistence.xml

LocalContainerEntityManagerFactoryBean lef = new LocalContainerEntityManagerFactoryBean();   
Properties props = new Properties();
props.put("hibernate.hbm2ddl.auto", "create");
props.put("hibernate.ejb.naming_strategy","org.hibernate.cfg.DefaultNamingStrategy");
lef.setJpaProperties(props); 
lef.afterPropertiesSet();
Run Code Online (Sandbox Code Playgroud)

spring hibernate hibernate-annotations spring-boot

7
推荐指数
1
解决办法
3万
查看次数

如何在双向关联上禁用Hibernate外键约束?

我试图禁用在我的双向关联上生成的外键约束.我已经设法为我的所有单向关联做了这个,但由于某种原因它在这里不起作用.

我确实知道最近在Hibernate 5.x中修复的ContraintMode.NO_CONSTRAINT的错误,我正在运行最新的Hibernate 5.2.6.

我的注释目前看起来像这样:

class Parent {
  @OneToMany(mappedBy="parent", cascade=CascadeType.ALL, orphanRemoval=true)
  @OrderColumn(name="childIndex")
  public List<Child> getChildren() {
    return children;
  }
}

class Child {
  @ManyToOne(optional=false)
  @JoinColumn(name="parent", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
  public Parent getParent() {
    return parent;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是尽管有NO_CONSTRAINT,Hibernate仍然在child.parent - > parent.id上创建外键约束.

是否需要做一些额外的事情来抑制双向情况下的外键?

谢谢!

java hibernate foreign-keys hibernate-annotations

7
推荐指数
2
解决办法
3668
查看次数