草庐IT

java - Spring Data JPA - 在没有@Transactional 的情况下获取延迟加载的集合

我的期望是,当在事务范围内访问集合时,应该获取延迟加载的集合。例如,如果我想获取一个集合,我可以调用foo.getBars.size()。缺少Activity事务将导致异常并显示错误消息,如failedtolazilyinitializeacollectionofbars:....couldnotinitializeproxy-noSession但是,我注意到我最新的应用程序中的行为有所不同。我将SpringBoot1.5.1与“data-jpa”启动器一起使用。我过去使用过SpringBoot,但data-jpastarter对我来说是新的。考虑以下情况。我有一个延迟加载的ManyT

java - 如何将数据库生成的列值定义为 JPA 和 Hibernate 中的只读字段?

使用MariaDB10.2可以为日期时间定义默认值,例如创建和最后修改。我应该如何将此列作为只读字段访问?因为这个值应该只在数据库的控制下,不应该从代码中修改,但我想在代码中读取这个属性。 最佳答案 很简单。只需将insertable和updatable属性设置为false。@Column(name="created_on",insertable=false,updatable=false)privateTimestampcreatedOn; 关于java-如何将数据库生成的列值定义为J

java - JPA 配置 boolean 字段以保留为整数

在JPA中有一个注解来指定boolean字段应该作为整数保存。我正在使用OpenJPA,它目前将boolean字段作为位保留。我宁愿使用整数1或0。 最佳答案 您可以指定列定义:@Column(name="boolColumn",columnDefinition="INT(1)") 关于java-JPA配置boolean字段以保留为整数,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

java - 扩展 JPA 实体以添加属性和逻辑

我需要知道是否可以通过扩展将一些属性和行为添加到某些POJOJPA实体(使用hibernate提供程序),然后使entityManager返回扩展对象而不仅仅是pojo实体,如以下示例:POJOJPA实体类@Entity@Table("test")publicclassTestimplementsSerializable{}扩展类publicclassExtendedTestextendsTest{...}获取扩展类的对象ListextendedList=entityManager.createNamedQuery("ExtendedTest.findByFoo").setParame

java - @CreatedBy 如何在 Spring Data JPA 中工作?

我在实体属性上使用了@CreatedDate,我看到它将日期插入到数据库中。我不明白SpringDataJPA中@CreatedBy注释的目的是什么。在referencedocumentation我读了:Weprovide@CreatedBy,@LastModifiedBytocapturetheuserwhocreatedormodifiedtheentity但是如何创建和使用这样的用户呢? 最佳答案 如果您已经阅读了引用文档,我建议您阅读twomoreparagraphs了解如何使用AuditorAware。:)

java - 有没有办法用 JPA/hibernate 滚动结果?

我在Toplink中发现了一些提示Queryquery=em.createQuery("SELECTeFROMEmployeeeORDERBYe.lastNameASC,e.firstNameASC");query.setHint("eclipselink.cursor.scrollable",true);ScrollableCursorscrollableCursor=(ScrollableCursor)query.getSingleResult();Listemps=scrollableCursor.next(10);是否有jpa/hibernate替代方案?

java - 使用@OneToMany 和@ManyToMany 的区别

我无法理解@OneToMany和@ManyToMany之间的区别。当我使用@OneToMany时,它默认创建一个JoinTable,如果您添加mappedBy属性,您将在两个实体之间建立双向关系。我有一个Question可能属于许多Categories,一个Category可能属于许多Questions.我不明白我应该使用@ManyToMany还是@OneToMany因为对我来说这似乎完全一样,但它可能不是。谁能解释一下? 最佳答案 好吧,区别在于您尝试使用对象来反射(reflect)的设计。在您的情况下,每个Question都可以

java - 使用 CriteriaBuilder 一次删除多个对象

我正在尝试使用CriteriaBuilderAPI通过一个查询删除一堆对象。我正在寻找类似这样的选择:CriteriaBuildercriteriaBuilder=entityManager.getCriteriaBuilder();CriteriaQueryquery=criteriaBuilder.createQuery(entityClass);Rootroot=query.from(entityClass);query.select(root).where(/*somecondition*/);returnentityManager.createQuery(query).get

java - 如何映射 Map<String,Double>

我试过了@ManyToMany(cascade=CascadeType.ALL)Mapdata=newHashMap();但它会产生错误:org.hibernate.AnnotationException:Useof@OneToManyor@ManyToManytargetinganunmappedclass:com.company.Klass.data[java.lang.Double]atorg.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1016

java - 如何避免与 JPA 级联重复?

我有一个Parent实体,它有一个Child实体,处于ManyToOne关系中:@EntityclassParent{//...@ManyToOne((cascade={CascadeType.ALL})privateChildchild;//...}Child有一个独特的字段:@EntityclassChild{//...@Column(unique=true)privateStringname;//...}当我需要一个新的Child时,我首先询问ChildDAO:Childchild=childDao.findByName(name);if(child==null){child=n