Questions tagged «hibernate»

Hibernate是一种Java语言的对象关系映射(ORM)库,使开发人员能够以远远超出对象/关系映射的方式在其应用程序中使用POJO风格的域模型。

3
用多余的列映射多对多关联表
我的数据库包含3个表:User和Service实体具有多对多关系,并按如下所示与SERVICE_USER表联接: 用户-SERVICE_USER-服务 SERVICE_USER表包含附加的BLOCKED列。 执行这种映射的最佳方法是什么?这些是我的实体类 @Entity @Table(name = "USERS") public class User implements java.io.Serializable { private String userid; private String email; @Id @Column(name = "USERID", unique = true, nullable = false,) public String getUserid() { return this.userid; } .... some get/set methods } @Entity @Table(name = "SERVICES") public class CmsService implements …

26
休眠:“字段'id'没有默认值”
我面临的问题是Hibernate的一个简单问题,但无法解决(无法访问的Hibernate论坛当然无济于事)。 我有一个简单的课程想继续学习,但是请继续学习: SEVERE: Field 'id' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not insert: [hibtest.model.Mensagem] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) [ a bunch more ] Caused by: java.sql.SQLException: Field 'id' doesn't have a default value [ a bunch more ] 持久化类的相关代码为: package hibtest.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; …

3
对于大型项目,Spring Data JPA与Hibernate有何不同?
我很难决定是应该坚持使用Hibernate进行新项目,还是选择JPA和新的Spring Data实现。 Spring Data框架适用于查询需求适中的大型项目还是小型项目? 虽然我当然看到了通过使用@Query注释在代码减少方面的优势,但是您对动态查询做了什么?当您要实现一个非常复杂的save()方法时该怎么办? 该文档说要创建您的主要存储库实现的Custom接口和实现,但是如果您需要访问Crud存储库本身的任何超级方法怎么办?Crud存储库实现了自定义方式-并非相反。这似乎是一个奇怪的设计。 我不确定该框架是否能够应对复杂和大型应用程序的挑战。我从来没有遇到过Hibernate的很多问题,并且我正在考虑坚持使用旧的可靠工具,而不是使用Spring Data JPA。 我该怎么办?如果使用Spring Data JPA,我会遇到哪些无法预见的复杂性和成本?

13
如何在Eclipse中安装Hibernate Tools?
在Eclipse中将Hibernate Tools作为插件安装的正确方法是什么?在Hibernate的网站并没有真正给予任何指示。 查看Hibernate Tools二进制文件HibernateTools-3.2.4.Beta1-R200810311334.zip,似乎可以将其解压缩到eclipse目录中。我是否将其解压缩到eclipse目录中?这似乎是一个hacky要安装它。

2
ORM映射中的“拥有方”是什么?
拥有方到底是什么意思?一些映射示例(一对多,一对一,多对一)的解释是什么? 以下文本摘自Java EE 6文档中@OneToOne的描述。您可以在其中看到概念拥有方面。 定义与具有一对一多重性的另一个实体的单值关联。通常不必显式指定关联的目标实体,因为通常可以从被引用对象的类型中推断出该目标实体。如果关系是双向的,则非拥有方必须使用OneToOne批注中的mappingBy元素来指定拥有方的关系字段或属性。
128 java  hibernate  orm  jpa  mapping 


17
休眠错误-QuerySyntaxException:[未从用户映射用户]
我试图从“用户”表中获取所有用户的列表,但出现以下错误: org.hibernate.hql.internal.ast.QuerySyntaxException: users is not mapped [from users] org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180) org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110) org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93) 这是我编写的用于添加/获取用户的代码: public List<User> getUsers() { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<User> result = (List<User>) session.createQuery("from users").list(); session.getTransaction().commit(); return result; } public void addUser(User user) { Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.save(user); session.getTransaction().commit(); } public void addUser(List<User> users) { Session …
126 java  hibernate 

1
spring.jpa.hibernate.ddl-auto属性在Spring中如何正常工作?
我当时在从事我的Spring Boot应用程序项目,并注意到,有时到另一个服务器(SQL Server)上的数据库存在连接超时错误。当我尝试执行一些脚本迁移时,这种情况会特别发生,FlyWay但在尝试几次后仍可以正常工作。 然后我注意到我没有spring.jpa.hibernate.ddl-auto在属性文件中指定 。我做了一些研究,发现建议增加 spring.jpa.hibernate.ddl-auto= create-drop开发。并将其更改为:spring.jpa.hibernate.ddl-auto= none生产中。 但是我实际上并不了解它实际上是如何工作的,以及休眠如何使用create-drop或none值生成数据库模式。您能否从技术上解释它是如何工作的,以及在开发和生产服务器上使用此属性的建议?谢谢

8
为SQL Server设置Maven依赖项
我正在开发一个Portlet,可以在其中对SQL Server数据库进行Hibernate访问。我为此设置了maven依赖项,并尝试以与MySql相同的方式找出SQL Server连接器。 如果我搜索SQL Server连接器,我的Google搜索仍然仅提供Mysql。正确的Maven依赖值是多少?

9
Spring Boot + JPA:列名注释被忽略
我有一个带有依赖项的Spring Boot应用程序spring-boot-starter-data-jpa。我的实体类具有带有列名称的列注释。例如: @Column(name="TestName") private String testName; 由此生成的SQL创建test_name为列名。在寻找解决方案之后,我发现spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy解决了该问题(列名来自列注释)。 我的问题仍然是,为什么不将naming_strategy设置为EJB3NamingStrategyJPA就会忽略列注释?也许休眠方言与此有关?我正在连接到MS SQL 2014 Express,我的日志包含: Unknown Microsoft SQL Server major version [12] using SQL Server 2000 dialect Using dialect: org.hibernate.dialect.SQLServerDialect

8
为byte []设置适当的休眠注释
我有一个使用hibernate 3.1和JPA批注的应用程序。它有一些带有byte []属性的对象(大小为1k-200k)。它使用JPA @Lob批注,并且hibernate 3.1可以在所有主要数据库上正常读取它们-似乎隐藏了JDBC Blob供应商的特性(应该这样做)。 @Entity public class ConfigAttribute { @Lob public byte[] getValueBuffer() { return m_valueBuffer; } } 当我们发现休眠3.5 破坏了(并且不会修复) postgresql中的这个注释组合时(没有解决方法),我们不得不升级到3.5 。到目前为止,我还没有找到明确的修复程序,但是我确实注意到,如果我只是删除@Lob,它将使用postteasql类型bytea(该方法有效,但仅适用于postgres)。 annotation postgres oracle works on ------------------------------------------------------------- byte[] + @Lob oid blob oracle byte[] bytea raw(255) postgresql byte[] + @Type(PBA) oid blob oracle byte[] + @Type(BT) bytea …

4
在JPA和Hibernate中,persist()和merge()之间有什么区别?
Hibernate中的persist()和merge()有什么区别? persist() 可以创建UPDATE&INSERT查询,例如: SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); A a=new A(); session.persist(a); a.setName("Mario"); session.flush(); 在这种情况下,将生成查询,如下所示: Hibernate: insert into A (NAME, ID) values (?, ?) Hibernate: update A set NAME=? where ID=? 因此persist()方法可以生成一个插入和一个更新。 现在merge(): SessionFactory sef = cfg.buildSessionFactory(); Session session = sef.openSession(); Singer singer = new Singer(); singer.setName("Luciano …
119 java  hibernate  jpa  orm  entity 

6
休眠,@ SequenceGenerator和allocationSize
我们都知道使用Hibernate时的默认行为@SequenceGenerator-它使实际数据库序列增加一,将该值乘以50(默认allocationSize值)-然后将该值用作实体ID。 这是错误的行为,并与说明以下内容的规范冲突: distributionSize-(可选)从序列中分配序列号时要增加的数量。 需要说明的是:我不关心生成的ID之间的差距。 我关心与基础数据库序列不一致的 ID 。例如:任何其他应用程序(例如,使用纯JDBC)可能要在从序列获得的ID下插入新行-但是所有这些值可能已被Hibernate使用!疯狂。 有人知道任何解决此问题的方法(没有设置allocationSize=1,从而降低性能)吗? 编辑: 弄清楚。如果最后插入的记录的ID = 1,则HB同时51, 52, 53...在其新实体BUT中使用值:数据库中序列的值将设置为2。当其他应用程序使用该序列时,很容易导致错误。 另一方面:规范说(据我所知)应该将数据库序列设置为51,同时HB应该使用范围内的值 2, 3 ... 50 更新: 正如下面的史蒂夫·埃伯索尔(Steve Ebersole)所述:我所描述的行为(也是许多人中最直观的行为)可以通过设置启用hibernate.id.new_generator_mappings=true。 感谢大家。 更新2: 对于将来的读者,您可以在下面找到一个有效的示例。 @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USERS_SEQ") @SequenceGenerator(name = "USERS_SEQ", sequenceName = "SEQUENCE_USERS") private Long id; } …
117 java  hibernate  jpa  hilo 

8
休眠条件使用FetchType.EAGER多次返回子级
我有一个Order包含列表的类,并使用OrderTransactions一对多的Hibernate映射将其映射,如下所示: @OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } 这些Order还具有一个field orderStatus,用于根据以下条件进行过滤: public List<Order> getOrderForProduct(OrderFilter orderFilter) { Criteria criteria = getHibernateSession() .createCriteria(Order.class) .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow())); return criteria.list(); } 这可以正常工作,并且结果符合预期。 现在是我的问题:为什么当我将访存类型显式设置为时EAGER,Orders在结果列表中出现多次? @OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL) public List<OrderTransaction> getOrderTransactions() { return orderTransactions; } 我如何更改我的标准代码才能在新设置下达到相同的结果?
115 java  hibernate 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.