Questions tagged «jpa»

Java Persistence API(JPA)是Java规范,用于访问,持久化和管理Java对象/类与关系数据库之间的数据。它是EJB 3.0规范的一部分,并且是对象到关系映射(ORM)的行业标准方法。

8
仅标记为回滚的事务:如何找到原因
我在@Transactional方法中提交事务时遇到问题: methodA() { methodB() } @Transactional methodB() { ... em.persist(); ... em.flush(); log("OK"); } 当我从methodA()调用methodB()时,该方法成功通过,并且我可以在日志中看到“确定”。但后来我明白了 Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly org.springframework.transaction.TransactionSystemException: Could not commit JPA transaction; nested exception is javax.persistence.RollbackException: Transaction marked as rollbackOnly at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:521) at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754) at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723) at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393) …

2
REFRESH和MERGE在数据库方面意味着什么?
我很好奇,需要快速找到答案。Google不会有太大帮助。 Java Persistence API具有这些属性,这些属性告诉框架对相关实体进行级联操作: CascadeType.PERSIST CascadeType.DELETE CascadeType.MERGE CascadeType.REFRESH 我知道前两个是什么意思:当我持久化具有B的对象A时,也持久化B,并且在删除A时也删除B。 但是我无法理解其他两个人的成就。救命?
93 java  jpa  persistence 

9
Spring JPA @Query与LIKE
我正在尝试在CrudRepository中创建一个方法,该方法将向我提供用户列表,其用户名类似于输入参数(不仅以它开头,还包含它)。我尝试使用method,"findUserByUsernameLike(@Param("username") String username)"但是正如Spring文档中所述,此方法等于“ where user.username like ?1”。这对我不利,因为我已经告诉过我我试图让所有用户名包含...的用户 我对方法写了一个查询,但它甚至没有部署。 @Repository public interface UserRepository extends CrudRepository<User, Long> { @Query("select u from user u where u.username like '%username%'") List<User> findUserByUsernameLike(@Param("username") String username); } 有人可以帮我吗?
92 java  jquery  sql  spring  jpa 

7
如何在JPA中映射名称为保留字的实体字段
@Column(name="open") 在休眠状态下使用sqlserver方言。 [SchemaUpdate] Unsuccessful: create table auth_session (id numeric(19,0) identity not null, active tinyint null, creation_date datetime not null, last_modified datetime not null, maxidle int null, maxlive int null, open tinyint null, sessionid varchar(255) not null, user_id numeric(19,0) not null, primary key (id), unique (sessionid)) [SchemaUpdate] Incorrect syntax near the …

3
如何结合验证两个或多个字段?
我正在使用JPA 2.0 /休眠验证来验证我的模型。我现在遇到一种情况,必须验证两个字段的组合: public class MyModel { public Integer getValue1() { //... } public String getValue2() { //... } } 该模型是无效的,如果都getValue1()和getValue2()都null和其他有效。 如何使用JPA 2.0 / Hibernate执行这种验证?使用简单的@NotNull注释,两个吸气剂都必须为非null才能通过验证。

8
FetchMode如何在Spring Data JPA中工作
我确实在项目中的三个模型对象之间有关系(文章末尾的模型和存储库片段)。 当我调用PlaceRepository.findById它时,会触发三个选择查询: (“ sql”) SELECT * FROM place p where id = arg SELECT * FROM user u where u.id = place.user.id SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id (对我而言)这是非常不正常的行为。据我阅读Hibernate文档后所知,它应该始终使用JOIN查询。在类中FetchType.LAZY更改为 查询时(带有附加SELECT 的查询)没有任何区别,而在类更改为 (使用JOIN查询时)则没有变化。FetchType.EAGERPlaceCityFetchType.LAZYFetchType.EAGER 当我使用CityRepository.findById抑制射击时,有两个选择: SELECT * FROM city c …

6
枚举的JPA地图集合
JPA中是否有一种方法可以在Entity类中映射枚举的集合?还是唯一的解决方案是用另一个域类包装Enum并使用它来映射集合? @Entity public class Person { public enum InterestsEnum {Books, Sport, etc... } //@??? Collection<InterestsEnum> interests; } 我正在使用Hibernate JPA实现,但是当然更喜欢与实现无关的解决方案。
91 java  jpa  jakarta-ee 

10
如何在JPA中删除具有ManyToMany关系的实体(以及相应的联接表行)?
假设我有两个实体:“组”和“用户”。每个用户可以是多个组的成员,每个组可以有多个用户。 @Entity public class User { @ManyToMany Set<Group> groups; //... } @Entity public class Group { @ManyToMany(mappedBy="groups") Set<User> users; //... } 现在,我要删除一个组(假设它有很多成员)。 问题是,当我在某个组上调用EntityManager.remove()时,JPA提供程序(在我的情况下为Hibernate)不会从联接表中删除行,并且由于外键约束,删除操作也会失败。在User上调用remove()可以正常工作(我想这与拥有关系的一方有关)。 那么在这种情况下如何删除组? 我想出的唯一方法是加载组中的所有用户,然后为每个用户从其组中删除当前组并更新用户。但是,对于该组中的每个用户调用update()只是为了能够删除该组,这似乎很荒谬。
91 java  hibernate  jpa  orm 

6
Spring Data JPA将本机查询结果映射到非实体POJO
我有一个带有本地查询的Spring Data Repository方法 @Query(value = "SELECT g.*, gm.* FROM group g LEFT JOIN group_members gm ON g.group_id = gm.group_id and gm.user_id = :userId WHERE g.group_id = :groupId", nativeQuery = true) GroupDetails getGroupDetails(@Param("userId") Integer userId, @Param("groupId") Integer groupId); 并且我想将结果映射到Non-Entity POJO GroupDetails。 是否可以,如果可以,请提供示例吗?

8
相似子句JPQL中的参数
我正在尝试使用like子句编写JPQL查询: LIKE '%:code%' 我想使用code = 4并找到 455 554 646 ... 我无法通过 :code = '%value%' namedQuery.setParameter("%" + this.value + "%"); 因为在另一个地方,我不需要:value用%字符包装。有什么帮助吗?

2
如何通过JPA注释引入多列约束?
我试图在JPA映射的实体上引入多键约束: public class InventoryItem { @Id private Long id; @Version private Long version; @ManyToOne @JoinColumn("productId") private Product product; @Column(nullable=false); private long serial; } 基本上(产品,序列)对应该是唯一的,但是我只找到一种说串行应该是唯一的方法。这显然不是一个好主意,因为不同的产品可能具有相同的序列号。 有没有办法通过JPA生成此约束,还是我被迫手动将其创建到DB?
90 java  jpa  mapping 


4
JPA多个嵌入式字段
JPA实体类是否可以包含两个嵌入式(@Embedded)字段?一个例子是: @Entity public class Person { @Embedded public Address home; @Embedded public Address work; } public class Address { public String street; ... } 在这种情况下,aPerson可以包含两个Address实例-家庭和工作。我在Hibernate的实现中使用JPA。当我使用Hibernate Tools生成架构时,它仅嵌入一个Address。我想要的是两个嵌入式Address实例,每个实例的列名都经过区分或以某些前缀(例如home和work)为前缀。我知道@AttributeOverrides,但这要求每个属性都应单独覆盖。如果嵌入式对象(Address)变大,则可能会很麻烦,因为每个列都需要单独覆盖。

1
JPA中的多个唯一约束
有没有一种方法可以使用JPA指定在不同的列集上应该有多个唯一约束? @Entity @Table(name="person", uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"})) public class Person { // Unique on code and uid public String code; public String uid; // Unique on username public String username; public String name; public String email; } 我已经看到了特定于休眠的注释,但是由于我们仍在确定休眠和数据核之间的关系,因此我试图避免使用特定于供应商的解决方案。

5
JPA与Spring JdbcTemplate [关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 10个月前关闭。 改善这个问题 对于新项目,JPA始终是推荐的用于处理关系数据的工具吗?或者在某些情况下,Spring JdbcTemplate是更好的选择?您的回应中应考虑以下因素: 新数据库架构与现有架构和表 开发人员专业知识水平 易于与数据缓存层集成 性能 还有其他需要考虑的因素吗?

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.