标签: hibernate-annotations

如何防止出现org.hibernate.loader.MultipleBagFetchException

我得到以下异常:

org.hibernate.loader.MultipleBagFetchException:无法同时获取多个行李

我使用的bean是:

@Entity
@Table(name="user")
public class User implements Serializable {

/**
 * 
 */
private static final long serialVersionUID = -5689970869179555442L;

@Id
@Column(name="username")
/*@NotNull*/
private String username;

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

@Column(name="email")
/*@Email*/
private String email;

@LazyCollection(LazyCollectionOption.FALSE)
@ManyToMany
@JoinTable(name="user_follower",joinColumns={@JoinColumn(name="username")},
        inverseJoinColumns={@JoinColumn(name="follower")})
private List<User> followers = new ArrayList<User>(0);

/*@LazyCollection(LazyCollectionOption.FALSE)*/
@OneToMany(fetch=FetchType.EAGER)
@JoinTable(name="user_message",joinColumns={@JoinColumn(name="username")},
        inverseJoinColumns={@JoinColumn(name="message_date")})
@OrderBy(value="messageDate")
private List<Message> messages = new ArrayList<Message>(0);

public User() {

}
Run Code Online (Sandbox Code Playgroud)

在dao我有以下代码:

public void followUser(String userToFollow, String username) {
    System.out.println("repository invoked");
    session=sessionFactory.getCurrentSession();
    User user=retrieveUser(username);
    @SuppressWarnings("unchecked")
    List<User> followers=session.createCriteria(User.class).setFetchMode("followers", FetchMode.JOIN)
    .add(Restrictions.eq("username", username)).list(); …
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-annotations

2
推荐指数
1
解决办法
6098
查看次数

java.lang.AssertionError和两个实体是一样的吗?什么可能导致这个?

使用Assert.AssertEquals()方法测试DAO时出现以下错误:

java.lang.AssertionError: expected: com.develop.test.data.entity.Rpoint<com.develop.test.data.entity.Rpoint@7668e5b5> but was: com.develop.test.data.entity.Rpoint<com.develop.test.data.entity.Rpoint@7668e5b5>
at org.junit.Assert.fail(Assert.java:91)
at org.junit.Assert.failNotEquals(Assert.java:645)
at org.junit.Assert.assertEquals(Assert.java:126)
at org.junit.Assert.assertEquals(Assert.java:145)
at com.develop.test.data.dao.RpointDAOTest.testFindById(RpointDAOTest.java:80)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:71)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:199)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Run Code Online (Sandbox Code Playgroud)

这是片段:

@Test
@Transactional(isolation …
Run Code Online (Sandbox Code Playgroud)

java spring annotations hibernate hibernate-annotations

2
推荐指数
1
解决办法
4774
查看次数

如何使用Hibernate注释将Firebird Smallint映射到布尔值?

我有一个在Firebird 2.0中运行的旧数据库,我需要将一个SmallInt列映射到一个布尔类型,当时它SmallInt = 0False,以及何时SmallInt = 1True.

我还需要使用Hibernate Annotations完成.

我正在使用Hibernate 3.6.

有小费吗?

提前致谢.

firebird hibernate hibernate-annotations

2
推荐指数
1
解决办法
2048
查看次数

更新后,Hibernate会从多对多关联表中删除记录

在我的团队合作应用程序中,我在用户和团队之间有多对多的关系,因此hibernate创建了关联表.问题是,在更新具有Team的User后,hibernate从USER_TEAM表中删除相应的关联记录.

用户实体:

@Entity
@Table(name="USERS")
public class User extends SelectItem {

@Id
@Column(name="EMAIL")
private String email;

@Column(name="PASSWORD")
private String password;

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

@Column(name="GROUPNAME")
private String group;

@ManyToMany(
    targetEntity=Team.class
)
@ForeignKey(name="FK_TEAM_TO_USER", inverseName = "FK_USER_TO_TEAM")
@JoinTable(
    name="USER_TEAM",
    joinColumns=@JoinColumn(name="EMAIL"),
    inverseJoinColumns=@JoinColumn(name="TEAMNAME")
)
@LazyCollection(LazyCollectionOption.FALSE)
private List<Team> teamList;

@OneToMany(
        fetch = FetchType.EAGER,
        mappedBy="user")
private List<Invitation> invitationList;

//getters setters
Run Code Online (Sandbox Code Playgroud)

团队实体:

@Entity
@Table(name="TEAM")
public class Team extends SelectItem {

@Id
@Column(name="TEAMNAME")
private String name;

@ManyToOne
@ForeignKey(name="FK_TEAM_TO_TEAMLEADER")
@JoinColumn(name="TEAMLEADER")
private User teamLeader;

@ManyToMany(
    mappedBy = "teamList",
    targetEntity = User.class …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate cascading-deletes hibernate-annotations hibernate-cascade

2
推荐指数
1
解决办法
2962
查看次数

hibernate-core和hibernate-annotation - 冲突

我收到错误:

java.lang.VerifyError: (class: org/hibernate/type/BasicTypeRegistry, method:  signature: ()V) Incompatible argument to function     
at org.hibernate.type.TypeResolver.(TypeResolver.java:59)   
at com.gs.ctt.cb.types.usertypes.GenericEnumUserType.setParameterValues(GenericEnumUserType.java:46) 
at org.hibernate.type.TypeFactory.injectParameters(TypeFactory.java:339)
Run Code Online (Sandbox Code Playgroud)



由于可能的原因是冲突的库,我发现该类:org.hibernate.cfg.AnnotationConfiguration两者都可用:

  • hibernate-annotations-3.3.0
  • hibernate-core-3.6.4

我是否需要摆脱hibernate-annotations?为什么?

java hibernate verifyerror hibernate-annotations

2
推荐指数
1
解决办法
4928
查看次数

在保存期间,hibernate @onetomany关系更新而不是插入

请帮我解决这个问题.我尝试了很多组合,但似乎没有任何效果.我正在尝试使用注释实现hibernate映射,但在保存我的父对象及其子对象期间,我注意到正在调用更新语句而不是insert语句.

我有两个课程,彼此之间有一对多的关系.

这些是类的映射:Receipt具有一对多的集合

@Entity
public class Receipt implements Serializable {

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    @OneToMany
    @JoinColumn(name="ReceiptId")
    private List<Collection> collections;

    //setters, getters
}


@Entity
public class Collection implements Serializable{

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private Long id;
    @ManyToOne
    @JoinColumn(name="ReceiptId", insertable=false, updatable=false)
    private Receipt receipt;

    //setters getters
}
Run Code Online (Sandbox Code Playgroud)

问题是在保存收据时如下:

Receipt r = new Receipt();
List<Collection> cols = new ArrayList<Collection>();
cols.add(new Collection());
r.setCollections(cols);
getHibernateTemplate().save(r);
Run Code Online (Sandbox Code Playgroud)

它会生成此错误:

Hibernate: insert into Receipt (userId, dateCreated, payor, receiptDate, receiptNumber, total) values (?, ?, ?, ?, ?, ?)
Hibernate: update Collection …
Run Code Online (Sandbox Code Playgroud)

spring annotations hibernate hibernate-annotations

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

Hibernate Annotations:将int存储在varchar列中

我正在使用Hibernate Annotations.

在我的POJO中,我有一个年份字段,它是一个int.

我想将此值保存在我的数据库中的char(4)列中,并且hibernate来回转换类型.无论如何我可以轻松地做到这一点(我开始研究@Type注释,但是如果可能的话,我不想写自己的自定义类型)?

hibernate hibernate-annotations

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

如何在hibernate中创建列包含实体类中的一些属性

我想在实体缝中属性.但我不想在数据库中创建列.例如我的实体是;

    @Entity
    public class Category extends Item implements Serializable {

    private static final long serialVersionUID = -1154500438874768209L;
        private List<Product> example;
    private List<Item> children;

    public void addChild(Item child) {
        if (children == null) {
            children = new ArrayList<Item>();
    }

    if (!children.contains(child)) {
        children.add(child);
    }
     }

     @OneToMany(cascade = CascadeType.ALL)
     public List<Item> getChildren() {
            return children;
     }

     public void setChildren(List<Item> children) {
          this.children = children;
     }

     public void setExample(List<Product> example) {
       this.example = example;
     }

     public List<Product> getExample() {
       return example;
     }
   } …
Run Code Online (Sandbox Code Playgroud)

database-design entity entity-relationship seam hibernate-annotations

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

实体继承和鉴别器列

我正在尝试测试一些 DAO。

我有实体(和表)命名Nomination,它有一些属性:

@Entity(name = "Nomination")
@Table(name = "NOMINATION")
@DiscriminatorColumn(name="CATEGORY_CODE", discriminatorType = DiscriminatorType.STRING, length = 1)

public class Nomination extends AuditableEntity {

@Id
@Column(name = "NOM_ID", insertable = true, updatable = true,
        nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

@Transient
protected NominationType type = null;

@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "PERIOD_ID", referencedColumnName = "PERIOD_ID")
@Cascade({org.hibernate.annotations.CascadeType.SAVE_UPDATE,
        org.hibernate.annotations.CascadeType.MERGE})
private NomPeriod period = null;

@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "CATEGORY_CODE", referencedColumnName …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate hibernate-annotations

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

org.hibernate.QueryException:@ManyToOne Criteria的重复关联路径

我有两个类,它们之间有关系.这些是

com.edfx.adb.persist.Activity:

package com.edfx.adb.persist.entity;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.NaturalId;

@javax.persistence.Entity
@Table(name = "ACTIVITY")
public class Activity extends Entity {

    @Transient
    private static final long serialVersionUID = 4741665931936809028L;

    private String activityId;
    private String activityName;
    private String activityDescription;
    private Customer customer;
    private ActivityType activityType;
    private boolean active;
    private Double mandays;
    private Double price;
    private String manager;
    private List<Participation> participations;

    public Activity() { …
Run Code Online (Sandbox Code Playgroud)

java hibernate-mapping hibernate-annotations hibernate-criteria hibernate-4.x

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

java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass

当我尝试本教程时,我是 JPA 和休眠的新手 。我在我的persistence.xml中添加了以下提供者,

<provider>org.hibernate.ejb.HibernatePersistence</provider> 
Run Code Online (Sandbox Code Playgroud)

我收到这个错误..

log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;
    at org.hibernate.ejb.Ejb3Configuration.addAnnotatedClass(Ejb3Configuration.java:1421)
    at org.hibernate.ejb.Ejb3Configuration.addNamedAnnotatedClasses(Ejb3Configuration.java:1391)
    at org.hibernate.ejb.Ejb3Configuration.addClassesToSessionFactory(Ejb3Configuration.java:1184)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1048)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:291)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:373)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:56)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:48)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
    at de.vogella.jpa.simple.main.Main.main(Main.java:17)
Run Code Online (Sandbox Code Playgroud)

请帮助解决此错误。谢谢

annotations hibernate jpa persistence.xml hibernate-annotations

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

如何在冬眠中为自身实体添加@onetoone映射

如何为自身实体添加一对一映射。就像在这个例子中一样。我想为此人本身建立亲子关系。

@Entity
@Table(name="PERSON")
public class Person {

@Id
@Column(name="personId")
private int id;

@OneToOne
@JoinColumn()
private Person parentPerson;
}
Run Code Online (Sandbox Code Playgroud)

spring hibernate hibernate-mapping hibernate-annotations

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

Hibernate:我不想删除子项

我是意大利人,我为我的英语道歉。

我有两个 POJO 类,它们在我的数据库中表示一个父表和一个子表。

家长。角色.java

@Id @GeneratedValue(strategy = GenerationType.AUTO)
private Long id;

@Column(name = "nome", length = 30, nullable = false)   
private String nome;

@Column(name = "cognome", length = 30, nullable = false)
private String cognome;

@Column(name = "eta")
private int eta;

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH}, mappedBy = "persona", orphanRemoval = false)
@Column(nullable = true)
private List<Telefono> numeriDiTelefono;

// Others getters and setters
Run Code Online (Sandbox Code Playgroud)

孩子。Telefono.java

@Id
@Column(name = "numero_telefono")
private String numeroDiTelefono;

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


@ManyToOne(cascade = {CascadeType.REMOVE, …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa hibernate-annotations

0
推荐指数
1
解决办法
3480
查看次数