草庐IT

Hibernate

全部标签

java - 使用hibernate创建新表时如何维护列顺序?

这个问题在这里已经有了答案:Wrongorderingingeneratedtableinjpa(6个答案)关闭3年前。这是我注释为实体的pojo@Entity@Table(name="book",catalog="book_db")publicclassBook{privateIntegerbookId;privateStringbookName;privateStringbookShortDesc;privateStringbookDesc;privateStringbookAuthor;}@Id@GeneratedValue(strategy=IDENTITY)@Column(n

java - Hibernate OnetoMany,ManyToOne 映射给空

我有两个名为PurchaseList.java和PurchaseListItems.java的类我必须在PurchaseListItems中映射PurchaseList采购list.java@OneToMany(cascade=CascadeType.ALL)@JoinColumn(name="pl_id",referencedColumnName="id")privateListpurchaseListItems;PurchaseListItems.java@ManyToOne@JoinColumn(name="pl_id")privatePurchaseListpurchaseLi

java - Hibernate:惰性初始化与损坏的哈希码/等于难题

我是JPA和Hibernate的新手(虽然我正在努力学习!)并且我正在努力解决一个我似乎无法找到简单解决方案的问题,所以就在这里。我有一个看起来像下面这样的实体:@Entity@Table(name="mytable1")publicclassEntityOne{//surrogatekey,databasegenerated@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id")privateLongid;//businesskey@Column(name="identifier",nullable=

java - 如何使用 log4j2.xml 配置 hibernate 日志记录?

我最近切换到Apachelog4j2,但仍然找不到使用log4j2.xml配置hibernate日志记录的方法。因为我找不到解决这个问题的方法,所以我仍然明确地为hibernate使用log4j.properties文件。这不是最佳解决方案,因为我的log4j2.xml使用JPA附加程序(将日志写入数据库)。我不想为hibernate编写单独的逻辑。有没有办法使用log4j2配置hibernate日志记录? 最佳答案 如建议https://issues.apache.org/jira/browse/LOG4J2-172您可以添加系统

java - 如何避免两个不同的线程从数据库中读取相同的行(Hibernate 和 Oracle 10g)

假设我有两个不同的线程,T1和T2,同时访问同一个数据库并从同一个表中获取数据。现在在线程启动时,我需要从表中获取数据并将行存储到一个集合中,然后我将使用它在其他地方执行一些工作。我不希望两个线程能够处理相同的数据,因为这会导致重复(和长时间)的工作。更具体地说,这是一个企业应用程序,需要在启动时加载一些记录并将其存储在一个集合中以执行一些额外的工作。问题在于,在集群环境中,这可能会导致两个不同的实例加载相同的数据,因此可能会重复工作。所以我希望行仅由单个实例加载一次。我怎样才能避免这种情况?我目前正在使用Hibernate和Oracle10g。这些是我到目前为止的解决方案:以编程方式

java - JPA : How to define @NamedEntityGraph for 3 levels?

我有3个实体。分支,主题,主题。Branch有主题列表,Subject有主题列表。还subjectList和topicList都是惰性的。我想获取所有分支在单个查询中包括其主题和主题。1.@EntitypublicclassBranchimplementsSerializable{privatestaticfinallongserialVersionUID=1L;@Id@GeneratedValue(strategy=GenerationType.AUTO)privateIntegerid;privateStringname;@OneToMany(mappedBy="branch")p

java - JPA 查询返回空值 - 具有空列的复合键

我有一个旧数据库(实际上是Cobol文件),我正在使用带有Hibernate/JPA的专有JDBC驱动程序访问它。实体有一个包含2列的复合主键:CODE和SITE.在遗留数据中有相同的记录CODE可以具有SITE的特定值,或者在SITE中可能有一条为NULL的记录代表“所有站点”的列。这个文件的理论是,如果你找不到CODE为您的特定SITE然后你在SITE中查找带有NULL的记录(“包罗万象”)。我不能改变这个“表”的结构,因为它会涉及重写我们不想做的大部分遗留Cobol系统。我也无法创建数据View。现在当我做em.find主复合键类包含特定的codesite为空,然后Hiberna

java - 在 JPA 中链接不同实体类型的最佳方法

简短版本用于仓促:我的域模型中有多个表/实体具有相同的字段(UUID)。有一个表,我需要将此类实体的行/实例链接到其他JPA管理的实体。换句话说,该链接表中字段的实例不会预先知道。我能想到的两种方法是:使用抽象实体和TABLE_PER_CLASS策略,或者使用@MappedSuperClass也将实例的类名存储在链接表中,或类似的东西让我定义从正确的表中获取实际实例的逻辑。两者在复杂性和性能方面各有优缺点。您认为哪个最好,是否有第三种选择,或者您过去是否尝试过类似的方法并且建议/强烈警告不要这样做?长版如果你想要更多背景:我有一个数据库/对象模型,其中许多类型都有一个公共(public

java - JPA 2.1 : Introducing Java 8 Date/Time API

我想在启用JPA的应用程序中添加对Java8日期/时间API(JSR-310)的支持。很明显JPA2.1doesnotsupporttheJava8Date/TimeAPI.作为解决方法,最常见的建议是使用AttributeConverter.在我现有的应用程序中,我将我的实体更改为对列映射字段使用LocalDate/LocalDateTime类型,并为java.util添加了旧版setter/getter.Date给他们。我创建了相应的AttributeConverter类。当使用Query.setParameter()和java.util.Date实例时,我的应用程序现在失败了(它

java - 具有继承性的实体的 JPA native 查询

我有一个实体类和一个基于该实体的子类:@Entity@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)publicclassA和@EntitypublicclassBextendsA我需要发出一个native查询,该查询仅在基类(A)上使用存储过程。如果我尝试如下:entityManager.createNativeQuery("select*fromAawhereprocedure(f)",A.class).getResultList()我收到关于“在结果集中找不到列clazz_”的错误。我假设JPA提供者添加此列是为了区分基