草庐IT

Hibernate

全部标签

java - @BatchSize 是聪明还是愚蠢的使用?

首先我将解释我是如何理解和使用@BatchSize的:@BatchSize是为了批量加载对象关系,减少对数据库的SQL请求。这对于LAZY@OneToMany关系特别有用。然而,它甚至对LAZY@OneToOne关系和@ManyToOne很有用:如果您从数据库加载实体列表并要求加载一个惰性@*ToOne实体,即使我只是使用加载列表第一个实体关系的测试,它也会按批处理加载实体。请注意,如果有些人想要测试:这仅在实体尚未加载时显示:例如,如果您有一个带有管理器的用户列表并列出所有用户,当您访问管理器时,不会触发任何请求因为它已经加载了。我在该方法中看到的唯一缺点是,如果您从数据库中加载项目

java - JPA 查询语法异常 : unexpected AST node: {vector} For In condition

我正在尝试将IN操作与@Query注释和JPA一起使用。我遇到以下错误:-antlr.NoViableAltException:unexpectedASTnode:{vector}atorg.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2112)org.springframework.dao.InvalidDataAccessApiUsageException:org.hibernate.hql.internal.ast.QuerySyntaxException:unex

java - 配置 Hibernate 以使用 Oracle 的 SYS_GUID() 作为主键

我正在寻找一种方法让hibernate在插入新行时使用oracle的SYS_GUID()函数。目前我的数据库表有SYS_GUID()作为默认值,所以如果hibernate只是简单地生成省略了它应该工作的值的SQL。我一切正常,但它目前正在使用system-uuid生成器在代码中生成UUID/GUID:@Id@GeneratedValue(generator="system-uuid")@GenericGenerator(name="system-uuid",strategy="uuid")@Column(name="PRODUCT_ID",unique=true,nullable=fa

java - 将 hibernate 组件映射到单独的表

是否可以配置Hibernate将组件类存储在单独的表中?举个例子:这映射到名为MyClass的表,其中包含两列propA和propB。我想要的是将组件的属性映射到名为ClassB的表。我不想做的是将ClassB配置为一个实体(它在ClassA之外没有任何有意义的标识),因此排除了正常关联。此外,我无法修改对象模型(它是生成的代码),因此我无法将ID属性引入ClassB。这似乎是Hibernate功能中的一个缺口——映射执行“多个类到一个表”,而执行“一个类到多个表”,但奇怪的是如果不求助于实体关联,则没有明显的方法可以实现“多类到多表”。我想要这样做的理由是我希望我的DB模式尽可能接近

java - 尝试加载 CLOB 字段时,DBunit 生成 java.lang.ClassCastException : java. lang.String 无法转换为 oracle.sql.CLOB

我在Oracle11GR2上使用最新版本的DBUnit(2.4.7)。我正在使用Java6(1.6.0_15)和最新版本的Oracle客户端jar(jdbc6.jar)我一直无法将CLOBOracle字段引用的任何数据从XML文件成功加载到数据库中。我使用了各种版本的组合:OracleJDBC库ojdbc5.jar、ojdbc6.jar、oracle10jarHibernate库等...我认为问题出在DBUnit上。请参阅下面的堆栈跟踪。org.hibernatehibernate-core3.5.0-CR-2和org.hibernatehibernate-entitymanager3

java - Hibernate递归查询

我想要的查询是获取属于某个类别的类(class)对象列表。我的对象如下:publicclassCourse{Stringname;Listcategories;}publicclassCategory{Stringname;Categoryparent;}由于类别相互引用,它们可以有无限的深度:AA.AA.A.AA.A.BA.BA.B.ABB.AB.BC如何查询类别“A.A”中的类(class),并返回与A.A、A.A.A和A.A.B关联的所有类(class)? 最佳答案 如果您愿意使用nativeSQL并且您的数据库支持递归公用表

java - 如何解决 Hibernate 异常 "IllegalArgumentException occurred while calling setter"的原因?

当我的程序尝试按名称从数据库中加载用户时,Hibernate抛出的偶尔异常IllegalArgumentExceptionoccurredwhilecallingsetter如何解决?我是否错误地将表User中的列USER_RV映射到类Integer而不是BigDecimal或其他一些整数类型?请注意,同一应用程序将其他表中的NUMBER列映射到Integer对象,但Hibernate在用行填充对象时不会抛出此异常来自那些表。另外请注意,该程序为仅用户缓存启用RMI缓存复制。此异常可能与缓存复制有关吗?是Ehcache还是Hibernate的bug?Causedby:org.sprin

java - DDD : Entity and its identifier

我的系统中有一个实体,自然需要一个标识符,这样才能唯一标识。假设数据库用于通过Hibernate生成标识符,使用native策略,那么显然应用程序代码没有分配标识符的责任。现在,该实体的实例在被持久化并获取其标识符之前是否可以被视为有效?或者我应该使用其他策略为我的实体分配标识符,以便在调用其构造函数时获取其标识符? 最佳答案 这是一个广泛的话题,但这里有两种可能性:根据businesskeys定义您的hashCode()和equals(..)合约.例如,对于User实体,这将是用户名,而不是自动生成的ID。因此,您将能够在实体被持

java - 为什么从 jndi.properties 注入(inject)后在 JNDI 中找不到数据源?

这是我的persistence.xml:org.hibernate.ejb.HibernatePersistencejdbc/abcDS这是来自src/test/resources的jndi.properties文件,它应该在测试期间创建一个数据源,因为没有带有真实数据源的真实应用服务器:java.naming.factory.initial=org.apache.openejb.client.LocalInitialContextFactoryjdbc/abcDS=new://Resource?type=DataSourcejdbc/abcDS.JdbcDriver=org.hsql

java - 如何为JPA和Hibernate创建一个persistence.xml文件?

我正在尝试使用HibernateJPA,但是我需要创建我的persistence.xml(以便可以正确使用实体管理器)。我不确定要创建什么以及将其放置在何处。这就是我在“Core”模式下配置hibernate.cfg.xml的方式。我正在使用EclipseJavaEEIDEWeb开发人员(靛蓝发行版):com.mysql.jdbc.DriverXXXXXXjdbc:mysql:///XXXXXXXXXXXorg.hibernate.dialect.MySQLDialect 最佳答案 创建一个位于META-INF文件夹中的persis