草庐IT

java - JPA native 查询返回具有来自多个表的字段的实体

我在JPANativeSql中有一个查询,我在其中执行表和连接的“联合”。我用来自多个表的所有查询字段创建了一个实体。所以我不能像往常一样使用JPA执行“@Column”“@table”。如何将查询的给定值设置为我的实体? 最佳答案 您可以使用@SqlResultSetMapping将nativeSQL查询返回的列映射到您的实体.Example:Queryq=em.createNativeQuery("SELECTo.idASorder_id,"+"o.quantityASorder_quantity,"+"o.itemASorde

java - JPA - 可选列

我们在每个客户的单独数据库中有许多客户数据,这些数据应该具有相同的架构/表结构。但是,与其他数据库相比,某些数据库中有一个表具有额外的列。例如,对于客户A,有一个包含a、b、c、d列的表X。对于客户B,有一个包含a、c、d列的表X。如果b存在,我需要捕获它,如果不存在,我可以忽略它。有没有办法告诉JPA在这些列不存在时忽略它们?@Basic(optional=true)读起来和我想要的完全一样,但文档表明它用于其他目的。目前,正如预期的那样,我在“字段列表”中得到未知列“table.field”附言不幸的是,我不能只将列添加到没有它们的数据库中。 最佳答案

java - 创建名称为 'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration' 的 bean 时出错

我已经在Eclipse中创建了一个Spring/Maven项目。然后我把它放在svn下的服务器上。然后我使用import>mavenproject等再次将它导入Eclipse。我当前的App.java应用程序包含以下代码:packagecom.mycomany.app;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;importorg.springframework.boot.autoconfigur

java - Spring Boot JPA 在@Transactional 上不需要 .save() 吗?

这个问题在这里已经有了答案:Transactionalsaveswithoutcallingupdatemethod(5个答案)关闭5年前。我有一个简短的问题:我是否需要对@Transactional方法调用repo.save(x)?我问是因为我在我的数据库上看到了没有保存的更改,并且没有阅读关于它的明确文档。那么它是按预期工作,还是只是一种(受欢迎的)意外行为?例子:@AutowiredprivateUserReporepo;@Transactional@PutMappingpublicLongput(@RequestBodyUseruser){Useru=repo.findOne(

java - 为什么使用 Hibernate 和 Oracle 10g 方言通过 JPA 创建名为 hibernate_sequence 的序列?

我所有的实体都使用这种类型的@Id@Id@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="MYENTITY_SEQ")@SequenceGenerator(name="MYENTITY_SEQ",sequenceName="MYENTITY_SEQ")@Column(name="MYENTITY",nullable=false)privateLongid;或@Id@Column(name="MYENTITY")我发现总是创建一个名为hibernate_sequence的Oracle序列。为什么会这样?我该如何避免这种

java - 在没有注释的情况下将 Hibernate 迁移到 JPA

我有一个大型的非JavaEE、基于JSF的Web应用程序项目。我们的系统是分层的(在源代码意义上):有一个数据模型包,DAO包建立在它之上。我们在DAO包中专门使用Hibernate的XML配置映射。我们真的不想用注解混淆数据模型,但也不是特别执着于Hibernate(除了映射相当复杂)。我强烈考虑转向JavaEE并将我们的DAO对象构建为EJB。但是由于我们不愿意丢弃Hibernate的XML,这引出了几个问题:是否可以在模型上没有JPA注释的情况下将Hibernate与JPA一起使用?如果不是,我的EJB是否有可能与Hibernate进行事务处理?我认为这称为JTA支持,但不确定。

java - JPA 2.0/hibernate : Why does LAZY fetching with "@OneToOne" work out of the box?

我的问题是关于JPA2.0与Hibernate、@OneToOne关系和延迟加载。首先我的设置:Spring3.0.5.RELEASESprnigDataJPA1.0.1.RELEASEhibernate3.5.2-Final数据库管理系统:PostgreSQL9.0我最近发现,@OneToOne关系无法以惰性方式(FetchType.LAZY)获取,至少在没有字节码检测、编译时编织等情况下是这样。许多网站都这样说,例如:http://community.jboss.org/wiki/SomeExplanationsOnLazyLoadingone-to-onehttp://justo

java - 打开 JPA Saving OneToMany,未设置外键

我有两个表:TaStock和TaStockPrice。表TaStockPrice中的字段tastockid是表TaStock的外键。@EntitypublicclassTaStock{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)Integerid@OneToMany(mappedBy="taStock",fetch=FetchType.LAZY,cascade=CascadeType.ALL)privateListtastockpriceList;publicvoidaddTaStockPrice(TaStockPriceta

java - 如何将多个字段分配为实体的主键(使用 JPA)

这个问题在这里已经有了答案:JPAcompositeprimarykey[duplicate](2个答案)关闭9年前。可以通过在JPA中使用@Id批注为其类分配主键。我的问题是,如果一个人不想在他的表中有一个自动生成的键并使用字段(可能不止一个)作为主键怎么办。假设我们有一个包含SSN、NATIONALITY和NAME的人员表。SSN被定义为一个人在他的国家被识别的号码。因此,我们可能在两个不同的国家有两个号码相同的人。该表的主键可以是SSN+NATIONALITY。有什么方法可以使用JPA映射这两个字段并将其映射到对象吗?或者它创建自动生成的id并使用@Id注释的唯一方法CREATE

java - JPA - 从 OneToMany 关系中删除一个 child

在@OneToMany关系中,如果我想删除一个child,我是否也需要从parent的集合中明确删除该child,还是只删除该child就足够了?例如,Person和Phone。每个人都有很多电话号码。如果我想删除一个人的一个电话号码就足够了:EntityManager.remove(phone);或者我需要事先这样做:Person.getPhone().remove(phone);更不用说,CascadeType设置为MERGE。 最佳答案 您需要从phones集合中显式删除Phone,仅使用EntityManager删除它是不够