Tag: hibernate

Hibernate Criteria Query来获取特定的列

我在我的代码中使用条件查询。 它始终激发select * from … 相反,我想忽略从我的查询一列(字段),因为该字段有大量的数据存储在字节。 这导致性能问题。 任何人都可以给出一个想法吗? 一些更新 我在我的查询中添加了一个投影,并创build了一个像… select this_.TEMPLATE_ID as y0_, this_.TEMPLATE_NAME as y1_, this_.CREATE_DATE as y2_, this_.UPDATE_DATE as y3_, this_.STATUS_CODE as y4_, this_.USER_ID as y5_, this_.UPDATED_BY as y6_, this_.CATEGORY_ID as y7_, this_.PRACTICE_ID as y8_ from templates this_ inner join user user1_ on this_.USER_ID=user1_.USER_ID inner join template_categories category2_ on this_.CATEGORY_ID=category2_.CATEGORY_ID where y4_=? […]

注解@Id和@GeneratedValue(strategy = GenerationType.IDENTITY)有什么用? 为什么生成types是身份?

@Id @GeneratedValue(strategy = GenerationType.IDENTITY) 为什么我们使用这个注释? 我需要知道这是否自动增加我的表ID值。 (GenerationType.IDENTITY)有什么其他types什么实际上发生在我们使用这个注释 public class Author extends Domain { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id") private Integer id; @Basic(optional = false) @Column(name = "name") private String name; @Column(name = "address") private String address; @OneToMany(cascade = CascadeType.ALL, mappedBy = "authorId") private List<Book> bookList; public Author() { setServiceClassName("wawo.tutorial.service.admin.AuthorService"); } […]

如何通过在Hibernate中使用限制和标准来实现“不在”?

我有类别列表。 我需要排除2,3行的类别列表。 我们可以通过使用标准和限制来实现hibernate吗?

存储库模式 – 如何理解它,以及它如何与“复杂”实体协同工作?

我很难理解版本库模式。 关于这个话题有很多意见,比如在Repository模式中做对了,而像Repository这样的其他东西是新的Singleton或者再次像不要使用DAO使用Repository或者只是采用Spring JPA Data + Hibernate + MySQL + MAVEN在哪里存储库似乎与DAO对象相同。 我已经厌倦了阅读这个东西,因为它不能像很多文章中显示的那样困难。 我是这样看的:看来我想要的是这样的: ———————————————————————— | Server | ———————————————————————— | | | | Client <-|-> Service Layer <-|-> Repository Layer <-|-> ORM / Database Layer | | | | | ———————————————————————— Service Layer采用*DTO对象,并将这些对象传递给Repository Layer ,它只不过是知道一个实体如何存储的“人”。 例如假设你有一些工具的组成( 请注意,这只是伪代码 ) @Entity class ToolSet { @Id public Long id; @OneToOne […]

hibernate/春季:未能懒惰地初始化 – 没有会议或会议被closures

对于一个答案向下滚动到这个结尾… 基本的问题和多次询问一样。 我有一个简单的程序,有两个POJO事件和用户 – 用户可以有多个事件。 @Entity @Table public class Event { private Long id; private String name; private User user; @Column @Id @GeneratedValue public Long getId() {return id;} public void setId(Long id) { this.id = id; } @Column public String getName() {return name;} public void setName(String name) {this.name = name;} @ManyToOne @JoinColumn(name="user_id") public User getUser() […]

如何testing延迟加载的JPA集合是否被初始化?

我有一个从外部代码获取JPA实体的服务。 在这个服务中,我想遍历一个延迟加载的集合,它是这个实体的一个属性,以查看客户端是否在数据库中添加了一些相对于当前版本的东西。 但是,客户可能从来没有碰过这个集合,所以它还没有被初始化。 这导致众所周知的 org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.SomeEntity. 当然,如果客户从未触摸收集,我的服务不必检查可能的更改。 问题是,我似乎无法find一种方法来testing集合是否被初始化。 我想我可以调用size() ,如果它抛出LazyInitializationException我会知道,但我试图不依赖于这种模式。 有什么isInitialized()方法吗?

我发现JPA,或类似的,不鼓励DAO模式

我发现JPA,或类似的,不鼓励DAO模式。 我不知道,但我觉得这样,尤其是服务器pipe理的JTA经理。 经过充分的动手使用DAO模式,我开始围绕这种模式devise基于JPA的应用程序。 但它不适合,国际海事组织。 我倾向于失去相当JPA和所有function。 那么,假设你用一个悲观的locking激发了一个查询,并且从DAO方法返回了一个entite列表。 返回时,事务结束并locking消失(服务器pipe理的JTApipe理器的情况)。 所以,没有意义,松散地说。 但是有一些有效的例子。 另一个例子是更微不足道的。 假设你启动了一个查询来获得一个实体,它与其他实体有一个延迟的加载一对多的关联。 在返回DAO方法后,事务结束。 延迟加载不会工作了,你只是得到null或什么的。 为了应付这个问题,我们手工加载它。 我们做一些像a.getBList().size() 。 因此,IMO最好不要专门制作一个DAO,并且在你的商业bean中这样做,这样你就可以利用这些有用的特性。 或者ORM API可以被认为是一个DAO /数据层本身。 所以,我们不需要再做一个。 你们都在想什么? 注:我绝对不会说DAO模式已经过时。 事实上,这取决于情况。

find对集合org.hibernate.HibernateException的共享引用

我得到这个错误信息: 错误:find对集合的共享引用:Person.relatedPersons 当我试图执行addToRelatedPersons(anotherPerson) : person.addToRelatedPersons(anotherPerson); anotherPerson.addToRelatedPersons(person); anotherPerson.save(); person.save(); 我的域名: Person { static hasMany = [relatedPersons:Person]; } 任何想法为什么发生这种情况

如何在每次testing后从我的HSQLDB中擦除数据?

我有一些JUnittesting已经写在我的项目中,用来填充设置方法中的数据。 现在我已经添加了maven到我的项目中,我想执行所有的testing用例,例如使用mvntesting。 现在的问题是,我的数据库不会在每个testing类运行后被清除。 每个类的testing用例都运行后,我需要清除HSQLDB。

@ManyToOne(可选= false)和@Column(nullable = false)之间有什么区别?

在JPA中,我很困惑何时使用属性optional=false和注解@Column(nullable=false) 。 有什么不同?