我得到以下异常:
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) 使用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) 我有一个在Firebird 2.0中运行的旧数据库,我需要将一个SmallInt列映射到一个布尔类型,当时它SmallInt = 0是False,以及何时SmallInt = 1它True.
我还需要使用Hibernate Annotations完成.
我正在使用Hibernate 3.6.
有小费吗?
提前致谢.
在我的团队合作应用程序中,我在用户和团队之间有多对多的关系,因此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
我收到错误:
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?为什么?
请帮我解决这个问题.我尝试了很多组合,但似乎没有任何效果.我正在尝试使用注释实现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) 我正在使用Hibernate Annotations.
在我的POJO中,我有一个年份字段,它是一个int.
我想将此值保存在我的数据库中的char(4)列中,并且hibernate来回转换类型.无论如何我可以轻松地做到这一点(我开始研究@Type注释,但是如果可能的话,我不想写自己的自定义类型)?
我想在实体缝中属性.但我不想在数据库中创建列.例如我的实体是;
@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
我正在尝试测试一些 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) 我有两个类,它们之间有关系.这些是
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
当我尝试本教程时,我是 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
如何为自身实体添加一对一映射。就像在这个例子中一样。我想为此人本身建立亲子关系。
@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) 我是意大利人,我为我的英语道歉。
我有两个 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) hibernate ×11
java ×5
spring ×4
annotations ×3
jpa ×2
entity ×1
firebird ×1
many-to-many ×1
seam ×1
verifyerror ×1