草庐IT

java - 如何在 Hibernate 中对延迟加载的集合使用二级缓存?

假设我有两个实体,Employee和Skill。每个员工都有一套技能。现在,当我通过Employee实例延迟加载技能时,缓存不会用于Employee不同实例中的技能。让我们考虑以下数据集。Employee-1:Java,PHPEmployee-2:Java,PHP当我在Employee-1之后加载Employee-2时,我不希望hibernate访问数据库来获取技能,而是使用缓存中已有的Skill实例。这可能吗?如果是怎么办?hibernate配置com.mysql.jdbc.Driverpassjdbc:mysql://localhost/cacherootorg.hibernate

java - 持久化实体时的问题

@Entity@Table(name="jobitems")@IdClass(JobItemId.class)publicclassJobItemimplementsSerializable{@ManyToOne@PrimaryKeyJoinColumn(name="forumId")privateForumforum;@ManyToOne@PrimaryKeyJoinColumn(name="parsingJobId")privateParsingJobparsingJob;@Id@Column(name="forumId",insertable=false,updatable=fa

java - 对 child 有限制的 hibernate 标准

我有一个Hibernate标准调用,我想在一个SQL语句中执行。我想要做的是选择Parent的实例,这些实例的Children的属性在一个值范围内(SQLIN子句),同时使用外部连接加载子实例。这是我到目前为止所拥有的:Criteriac=session.createCriteria(Parent.class);c.createAlias("children","c",CriteriaSpecification.LEFT_JOIN).setFetchMode("c",FetchMode.JOIN).add(Restrictions.in("c.property",properties)

java - 设计具有外键关系的 DTO

我正在为Web应用程序使用Java+Spring框架。我没有使用任何ORM工具。相反,我尝试使用简单的DAO/DTO模式将数据库关系建模为Java对象。每当DTO与数据库中的单个表完全对应时,它就非常简单。但是如果有表使用外键引用其他表,我不确定最好的方法是什么。在Stackoverflow中寻找类似的答案,但找不到符合我需要的答案。我想举一个非常具体的例子——假设有两个实体用户和组。我有一个UserDTO和GroupDTO,每个都有UserDao(JdbcUserDao)和GroupDao(JdbcGroupDao)。现在我在数据库中有一个连接用户和组的关系。一个用户可以属于多个组。

java - 如何将包含单引号的字符串保存到 PostgreSQL 中的文本列

我在Smartwcmweb应用程序SDK中使用hibernate和PostgreSQL作为数据库。我在其中一个表中有一个字段,它的数据类型是文本。当我尝试使用相应的POJO使用hibernate将值插入表中时,如果我尝试保存到数据库中的字符串包含',则会抛出异常。异常信息是:Requestprocessingfailed;nestedexceptionisorg.springframework.dao.InvalidDataAccessResourceUsageException:CouldnotexecuteJDBCbatchupdate;SQL[updatepublic.slide

java - 没有容器的jpa

我喜欢使用jpa,但没有应用程序容器。我打算在控制台应用程序中使用它。有例子吗?问候 最佳答案 您可以在JavaSE环境中使用JPA。以下是一些示例:JavaPersistenceAPIsinJavaSE-GlassFish.EmployeeExamplesusingEclipseLinkORM.XML.Persistencetutorial:JPAandJavaSEwithNetbeans. 关于java-没有容器的jpa,我们在StackOverflow上找到一个类似的问题:

java - 如何使用 Hibernate/JPA 2 实现 Spring Security 用户/权限?

我正在尝试实现DAO以在Hibernate/JPA2中使用SpringSecurity数据库身份验证。Spring使用以下关系和关联来表示用户和角色:表示为postgresql创建查询:CREATETABLEusers(usernamecharactervarying(50)NOTNULL,"password"charactervarying(50)NOTNULL,enabledbooleanNOTNULL,CONSTRAINTusers_pkeyPRIMARYKEY(username));CREATETABLEauthorities(usernamecharactervarying(

java - hibernate 批量更新后清除 session 、刷新、刷新?

我们知道,当使用hibernate对数据库进行批量更新时(即使在HQL中),所做的更改不会复制到存储在当前session中的实体。所以我可以调用session.refresh来加载对我的session实体的修改。我们经常调用flush将我们的修改发送到数据库,但文档说它“同步”session和数据库...这是否意味着flush能够为我的session实体设置好的新数据库值?或者flush最终会用存储在实体中的旧值删除我的新数据库值?(顺便说一句,如果hibernate的行为是第一个,它如何检测哪个是“好的值(value)”?)。如果我不能在这种情况下使用flush,最好在每次批量更新后

java - 如何在 Hibernate 中映射一组枚举类型?

在hibernate中,是否可以为一个类定义一个映射到一组枚举?我已经能够找到有关如何定义集合映射的示例,并且已经能够找到有关如何映射枚举的单独示例,但我无法弄清楚如何为类定义枚举。谁能给我举个例子吗?这是在现有应用程序之上构建的,因此我无法更改数据库架构。这是我想要建模的关系。Wicket是一个普通类,WicketType是一个Java枚举。+----------------++------------++------------+|Wicket||RefTable||WicketType|+----------------++------------++------------+|

java - @IdClass 使用 JPA 和 Hibernate 生成 'Identifier of an Instance was Altered'

对于使用不区分大小写的数据库模式的JPA实体模型,当我使用@IdClass注释时,我始终会收到“实例标识符已更改”异常。对于主键为'string'的对象,当数据库中存在一个大小写的字符串,并使用相同的字符串进行查询,仅大小写不同时,就会出现错误。我看过其他SO答案,它们的形式是:a)不要修改主键(我没有)和b)你的equals()/hashCode()实现有缺陷。对于“b”,我尝试使用toLowerCase()和equalsIgnoringCase()但无济于事。[此外,Hibernate代码似乎是直接设置属性,而不是在发生“改变”时调用属性setter。]具体错误如下:Causedb