Tag: 冬眠

在Hibernate中persist()vs save()的优点是什么?

任何人都可以告诉我什么是persist() vs save()在hibernate的优点?

使用复合主键和注解映射ManyToMany:

我正在尝试使用复合主键在学生和教学课程之间创造出许多有用的联系: 我的课程: @Entity @Table(name="Student_mtm_cId") public class Student { private String id; private Set<StudentTClass> teachingClasses = new HashSet<StudentTClass>(); @OneToMany(fetch = FetchType.LAZY, mappedBy = "pk.student") public Set<StudentTClass> getTeachingClasses() { return teachingClasses; } public void setTeachingClasses(Set<StudentTClass> teachingClasses) { this.teachingClasses = teachingClasses; } public void addStudentToClass(TeachingClass teachingClass){ StudentTClass studentTClass = new StudentTClass(); studentTClass.setStudent(this); studentTClass.setTeachingClass(teachingClass); teachingClasses.add(studentTClass); } public void setLastName(String […]

buildSessionFactory()在hibernate 4中被弃用了吗?

当我将Hibernate的版本从3.6.8.final更新到4.0.0.final时,我在这一行中收到了有关不推荐使用的方法buildSessionFactory()的警告: private static final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); javadocbuild议使用另一种方法 buildSessionFactory(ServiceRegistry serviceRegistry) 但在文档中我发现不推荐使用的变体:( 你能帮我解决这个小小的误解吗?

什么是Hibernate的一级和二级caching?

任何人都可以用简单的语言解释Hibernate中的第一级和第二级caching是什么?

我如何从jackson的一个自定义反序列化器中调用默认的反序列化器

我在Jackson的自定义反序列化程序中遇到问题。 我想访问默认序列化程序来填充我反序列化的对象。 在人口之后,我会做一些自定义的事情,但首先我想用默认的jackson行为反序列化对象。 这是我目前的代码。 public class UserEventDeserializer extends StdDeserializer<User> { private static final long serialVersionUID = 7923585097068641765L; public UserEventDeserializer() { super(User.class); } @Override @Transactional public User deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectCodec oc = jp.getCodec(); JsonNode node = oc.readTree(jp); User deserializedUser = null; deserializedUser = super.deserialize(jp, ctxt, new User()); // The previous […]

Hibernate Criteria使用FetchType.EAGER多次返回子项

我有一个Order类有一个OrderTransactions列表,我用一对多的Hibernate映射来映射它,像这样: @OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } 这些Order也有一个字段orderStatus ,用于过滤以下标准: public List<Order> getOrderForProduct(OrderFilter orderFilter) { Criteria criteria = getHibernateSession() .createCriteria(Order.class) .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow())); return criteria.list(); } 这工作,结果如预期。 现在这是我的问题 :为什么,当我明确地设置获取types为EAGER ,是否在结果列表中出现多次? @OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } 我将如何更改我的标准代码以达到与新设置相同的结果?