小编Nei*_*ton的帖子

JavaFX,TableView和JPA

我是JavaFX的新手,我正在尝试将旧的Swing应用程序重构为JavaFX.

我也在使用JPA(使用EclipseLink实现)来保存/检索数据.
所以我已经定义了一些注释的POJO.

这里有我注释的POJO:

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 *
 * @author alex
 */
@Entity
@Table(name = "materiale", catalog = "elledia", schema = "")
public class Materiale implements Serializable {
  @Transient
  private static final long serialVersionUID = 1L;

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Basic(optional = false)
  @Column(name = "id")
  private Long id;

  @Basic(optional = false)
  @Column(name = …
Run Code Online (Sandbox Code Playgroud)

javafx pojo tableview

5
推荐指数
1
解决办法
2497
查看次数

App Engine不会创建local_db.bin

我是appengine的新手,我使用的是appengine版本1.8.7(在1.8.6中也适用于我),并尝试将maven添加到项目中.

当我持久化实体时,日志如下:

[INFO] nov 07, 2013 5:38:33 PM com.google.appengine.api.datastore.dev.LocalDatastoreService init
[INFO] INFO: Local Datastore initialized:
[INFO]  Type: High Replication
[INFO]  Storage: D:\Projects\JEE\myapp\tmp\local_db.bin
[INFO] nov 07, 2013 5:38:33 PM com.google.appengine.api.datastore.dev.LocalDatastoreService load
[INFO] INFO: The backing store, D:\Projects\JEE\myapp\tmp\local_db.bin, does not exist. It will be created.
Run Code Online (Sandbox Code Playgroud)

我的问题是没有创建local_db.bin.例如,如果我尝试搜索我的peristed实体,则会出现错误.

[INFO] java.lang.IllegalArgumentException: Type com.harriague.myapp.dao.entities.Travel is not a known entity type
[INFO]  at org.datanucleus.api.jpa.metamodel.MetamodelImpl.entity(MetamodelImpl.java:193)
Run Code Online (Sandbox Code Playgroud)

...

这是我的实体类:

package com.harriague.myapp.dao.entities;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Column;

import com.google.appengine.api.datastore.Key;

@Entity(name = "Travel")
public class Travel { …
Run Code Online (Sandbox Code Playgroud)

java google-app-engine maven jpa-2.0

5
推荐指数
2
解决办法
2306
查看次数

有没有办法使用JDBC检查SEQUENCE的存在?

我需要以编程方式在数据存储区中生成序列,但需要能够检测它们的存在而不是在它们已经存在的情况下创建.有人知道提取此信息所需的JDBC元数据吗?

DatabaseMetadata进行粗略扫描并未发现合适的方法; 我可以获取所有表/视图和关联的键/索引等,但不能获取该模式的序列.有没有人知道一种方法,最好是数据库独立的,但如果没有,那么对于尽可能多的数据库(想想oracle有一个user_sequence表?但这只是一个数据库,我需要支持其他数据库).

提前致谢

java sql jdbc sequence

5
推荐指数
1
解决办法
3053
查看次数

JPA CriteriaQuery实现Spring Data Pageable.getSort()

我使用JPA CriteriaQuery构建我的动态Query并传入Spring Data Pageable对象:

sort=name,desc
Run Code Online (Sandbox Code Playgroud)

在后端,我的存储库中有一个方法来支持动态查询:

public Page<User> findByCriteria(String username, Pageable page) {
    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<User> cq = cb.createQuery(User.class);
    Root<User> iRoot = cq.from(User.class);
    List<Predicate> predicates = new ArrayList<Predicate>();

    if (StringUtils.isNotEmpty(username)) {
        predicates.add(cb.like(cb.lower(iRoot.<String>get("username")), "%" + username.toLowerCase() + "%"));
    }

    Predicate[] predArray = new Predicate[predicates.size()];
    predicates.toArray(predArray);

    cq.where(predArray);

    TypedQuery<User> query = em.createQuery(cq);

    int totalRows = query.getResultList().size();

    query.setFirstResult(page.getPageNumber() * page.getPageSize());
    query.setMaxResults(page.getPageSize());

    Page<User> result = new PageImpl<User>(query.getResultList(), page, totalRows);

    return result;
}
Run Code Online (Sandbox Code Playgroud)

注意:我只为演示目的放了一个参数.

但是返回的数据是未排序的,因此我想问一下在CriteriaQuery中实现Pageable的任何方法.

java spring hibernate spring-data-jpa jpa-criteria

5
推荐指数
3
解决办法
7584
查看次数

Spring Boot JPA CrudRepository 选择性更新 - 仅部分属性

在将 Hibernate 与 Spring Boot JPA 结合使用时,我注意到,当尝试在扩展 Spring 的 CrudRepository 接口的存储库工件中实现更新方法时,必须将要更新的整个实体对象传递给这样的更新方法。直观上这似乎很浪费,我想知道什么是一种干净的方法来让 Spring Data/JPA 假设只有那些传入的值需要更新,而那些未传入的值则保持不变。

这是目前的服务方法,

   public void updateCustomer(Long id, Customer customer) throws Exception {
        customerRepository.save(customer);
    }
Run Code Online (Sandbox Code Playgroud)

spring hibernate spring-data spring-data-jpa spring-boot

5
推荐指数
1
解决办法
2497
查看次数

Spring @Query with Lower和Wildcards

本课题涉及Spring Data JPA.

我需要一个带有Lower Function和Wildcards的(native)@Query.但是我不能让它发挥作用.

这是我正在寻找的过于简化的版本:

@Query(value = "SELECT * FROM CAR c WHERE LOWER(c.model) LIKE LOWER(%:model%)", nativeQuery = true)
List<Car> findByModelMatching( @Param("model") String model );
Run Code Online (Sandbox Code Playgroud)

更低(%:型号%) - >不工作!LOWER(:型号) - >有效!

我知道这样的查询可以很容易地重写为:

List<Car> findByModelContainingIgnoreCase( String model );
Run Code Online (Sandbox Code Playgroud)

但我不是在寻找一个命名查询.

我的问题是:如何在@Query中将LOWER(甚至UPPER)与WildCards结合起来!

干杯

java sql spring wildcard spring-data-jpa

5
推荐指数
1
解决办法
1205
查看次数

如何使用JPA删除连接表中的行

我有下面的模型:文章可以有一些标签,标签可以在一些文章上.所以它是与3个表的多对多关系:

  • 文章
  • ARTICLE_TAG
  • 标签

当我删除标签时,我想删除:

  • TAG中的标签
  • 标签与ARTICLE_TAG中标记的文章之间的所有关系

但我当然不想删除文章中的文章.

我怎样才能做到这一点 ?

我试试这个,但它不起作用:

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
for (Article article : tagToDelete.getArticles()) {
    article.getTags().remove(tagToDelete);
}
session.delete(tagToDelete);
Run Code Online (Sandbox Code Playgroud)

谢谢 !

@Entity
@Table(name="ARTICLE")
public class Article extends AbstractAuditedEntity {

    @Id
    @Column(name="ID", nullable=false)
    private Long id;

    @ManyToMany
    @JoinTable(name="ARTICLE_TAG", joinColumns=@JoinColumn(name = "ARTICLE_ID"), inverseJoinColumns=@JoinColumn(name = "TAG_ID"))
    private Set<Tag> tags = new HashSet<>();

    public Article() {}

    /** Getters & Setters */
}

@Entity
@Table(name="TAG")
public class Tag {

    @Id
    @Column(name="ID", nullable=false)
    private Long id;    

    @ManyToMany(mappedBy="tags")
    private Set<Article> articles = …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate jointable mappedby

5
推荐指数
1
解决办法
3288
查看次数

什么是对多个字段使用findBy的Spring Data JPA方法,并对所有字段使用Containing子句

我有一个名为Profile的类及其JPA存储库ProfileRepo我正在尝试使用findBy方法使用名字或中间名或姓氏以及使用contains子句查找名称.

public class Profile{
    private String firstName;
    private String middleName;
    private String lastName;

    //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我在JPA存储库中使用以下查询但它不接受该方法

List<Profile> findByLastNameContainingOrFirstNameContainingOrMiddleNameContainingAllIgnoreCase(String firstName,
        String lastName,String midName);
Run Code Online (Sandbox Code Playgroud)

请帮忙.

java db2 spring repository spring-data-jpa

5
推荐指数
1
解决办法
2万
查看次数

Spring Boot JPA 过滤器按连接表

我在文档中找不到具体的东西(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods.query-creation)并且在几个方面没有令人满意的答案博客。所以这里是我的问题。

我有表实体,如:

@Entity
@Table(name = "workstation")
public class Workstation
{
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "userid", nullable = false)
 public User user;
}
Run Code Online (Sandbox Code Playgroud)

和用户表实体:

public class user
{
 @Id
 @GeneratedValue(strategy = IDENTITY)
 @Column(name = "ID", unique = true, nullable = false)
 public Integer id;

 @Column(name = "age", nullable = false)
 public int age
}
Run Code Online (Sandbox Code Playgroud)

现在我想在我的存储库中有一个这样的查询:

public interface WorkstationRepo extends CrudRepository<Workstation, Long> {
 findByUserAgeLesserThan(int maxAge);
}
Run Code Online (Sandbox Code Playgroud)

意味着我想通过我的工作站实体找到所有未满特定年龄的用户。

没有@Query 注释是否可能?或者/它应该是什么样子?

spring hibernate jpql spring-data-jpa

5
推荐指数
1
解决办法
5014
查看次数

我应该使用哪个 spring grpc 启动启动项目?

我们正处于使用 gRPC 开发微服务的初期。我们的微服务旨在在 JVM 上运行。在我们的持久层中,我们想使用一个 ORM 库。Spring Data JPA 项目看起来很有前途。

但是有两个 spring-grpc-boot-starter 项目吗?

我应该使用哪一种?或者您推荐其他任何一种或方法吗?

spring spring-data-jpa spring-boot grpc grpc-java

5
推荐指数
1
解决办法
1459
查看次数