小编sni*_*guu的帖子

从Joda Money使用BigMoney进行条件查询(实体中的多列字段)

我在“条件查询”中遇到了严重问题。

我的实体类如下所示:

class X {
  ...
    @Columns(columns = {
      @Column(name = "priceCurrency", nullable = false),
      @Column(name = "priceAmount", nullable = false)})
    @Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentBigMoneyAmountAndCurrency")
    @Basic(fetch = FetchType.EAGER)
    BigMoney price;
  ...
}
Run Code Online (Sandbox Code Playgroud)

而且我还有另一个班级Y,其中有一个List<X> xs

我也有一个正常的 JPA查询:

SELECT y
  FROM Y y
  LEFT JOIN y.xs x
  GROUP BY y
  ORDER BY SUM(y.price.amount)
Run Code Online (Sandbox Code Playgroud)

现在,我想将其转移到CriteriaQuery。我开始于:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Y> q = cb.createQuery(Y.class);
Root<Y> root = q.from(Y.class);

ListJoin<Y, X> j = root.join(Y_.xs, JoinType.LEFT);
q.groupBy(root);
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法,但是都没有用:(这里有一些例子:

Path<BigDecimal> x = j.get("priceAmount");
Run Code Online (Sandbox Code Playgroud)

要么:

Path<BigDecimal> …
Run Code Online (Sandbox Code Playgroud)

jpa criteria criteria-api criteriaquery

5
推荐指数
0
解决办法
469
查看次数

集合的Spring数据规范包含操作

我有两个实体,AB.它们之间存在多对多关系,其中A包含一个列表B.如何编写规范来检索A包含B特定名称的所有entites ?例:

@Service
public class YourService {

    @Resource
    private ARepository repository;

    // I know how to do this type of queries with specifications
    public List<A> getByB(B b) {
        return repository.findAll(Specifications.containsB(b));
    }

    //Question: how to write Specification for this type of query?
    public List<A> getByNameOfB(String name) {
         return repository.findAll(Specifications.containsBWithName(name));
    }
} 
Run Code Online (Sandbox Code Playgroud)

实体:

@Entity
public class B {

        @Id
        @SequenceGenerator(sequenceName = "B_SEQ", name = "BSeq", allocationSize = 1) …
Run Code Online (Sandbox Code Playgroud)

java criteria-api spring-data spring-data-jpa

4
推荐指数
2
解决办法
1980
查看次数

Java 8:将文件读入字符串

我在控制器的同一个包中有一个 json 文件,我尝试读取该文件并将其转换为 String

new String(Files.readAllBytes(Paths.get("CustomerOrganization.json")));
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误:

java.nio.file.NoSuchFileException: CustomerOrganization.json
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

java file-io file java-8

4
推荐指数
1
解决办法
6623
查看次数

Hibernate条件查询,它使用相关实体的主键来过滤结果

在我们的系统中,我们的数据库如下所示

一个代理商有很多经纪人,一个经纪人有很多用户,一个用户有很多订单.

我正在尝试使用hibernate标准来查找指定经纪商下的所有用户订单.在简单的SQL中,这将非常容易.我可以在条件api中执行此操作吗?我发现在使用点击和过滤器类型时,条件api工作得特别好,因为您可以构建一个非有序的限制列表并将它们添加到条件中.

目前我有这个不起作用

final Session session = (Session) entityManager.getDelegate();
    final Brokerage brokerage = userAdmin.loadBrokerage(brokerageId);
    @SuppressWarnings({"UnnecessaryLocalVariable", "unchecked"})
    final List<UserOrder> userOrders = session
            .createCriteria(UserOrder.class)
            .add(Restrictions.eq("user.brokerage", brokerage))
            .list();
Run Code Online (Sandbox Code Playgroud)

我收到消息"由以下原因引起:org.hibernate.QueryException:无法解析属性:user.brokerage:com.printlogix.rp.server.domain.UserOrder:".

你能将param名称传递给Restrictions.eq,如"object.parentobject.property"吗?

hibernate jpa hibernate-criteria

3
推荐指数
1
解决办法
3831
查看次数

JPQL相当于使用联合和选择常量的SQL查询

我编写了一个SQL查询,它基本上从许多表中选择,以确定哪些表具有自特定日期以来创建的行.我的SQL看起来像这样:

SELECT widget_type FROM(
  SELECT 'A' as widget_type
  FROM widget_a
  WHERE creation_timestamp > :cutoff
  UNION
  SELECT 'B' as widget_type
  FROM widget_b
  WHERE creation_timestamp > :cutoff
) types
GROUP BY widget_type
HAVING count(*)>0
Run Code Online (Sandbox Code Playgroud)

这在SQL中运行良好但我最近发现,虽然JPA可能使用联合执行"每类表"多态查询,但JPQL不支持查询中的联合.所以这让我想知道JPA是否有一个替代方案可以用来完成同样的事情.

实际上,我会查询十几个表,而不仅仅是两个表,所以我想避免单独查询.我还想避免出于可移植性原因而进行本机SQL查询.

在我上面链接的问题中,有人询问映射到widget_a和widget_b的实体是否是同一继承树的一部分.对,他们是.但是,如果我从他们的基类中选择,我不相信我会为不同的子实体指定不同的字符串常量,我会吗?如果我可以选择实体的类名而不是我提供的字符串,那也可能符合我的目的.但我不知道这是否可能.思考?

jpa jpql

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

詹金斯:“从阶段重新启动”在我的管道 UI 中不可用

我正在研究从中间失败的阶段重新启动詹金斯管道的能力(例如)。

我继承了这个 CI 服务器并负责更新它,所以我发现这个功能可以“从阶段重新启动”:https : //jenkins.io/doc/book/pipeline/running-pipelines/#restart-from-a-stage

但是,我没有在 jenkins UI 上看到这个按钮。我猜这是因为我的 jenkins 版本太旧了。

这是我服务器上的一些信息:Jenkins 版本。2.107 插件信息:管道 - 2.5

如果有帮助,我可以分享其他插件信息。

问题:1)我需要做什么才能从舞台功能重新启动?2) 下次我怎样才能知道我需要什么版本才能获得某些新功能(如果这是根本原因)?

jenkins jenkins-pipeline

3
推荐指数
1
解决办法
4359
查看次数

无法在 Kotlin 中添加标准 api 谓词,获取 Type interface failed 错误

我遇到了无法解决的非常烦人的问题,我想我错过了一些非常直接的东西,因为我已经有了 Java 中的工作代码。

基本上我所拥有的是这样的:

class ConfigurationSpecification(
        private var list: MutableList<SearchCriteria> = mutableListOf()
) : Specification<Configuration> {
    override fun toPredicate(root: Root<Configuration>, query: CriteriaQuery<*>, builder: CriteriaBuilder): Predicate? {
        val predicates: MutableList<Predicate> = mutableListOf()

        for (criteria in list) {
            if (criteria.operation == "EQUALS") {
                predicates.add(builder.equal(root.get(criteria.key), criteria.value)) <- NOT WORKING root.get(criteria.key) this is making issue
            }
        }

        return builder.and(predicates[0])
    }
}
Run Code Online (Sandbox Code Playgroud)

代码真的很简单,但由于某种原因 Kotlin 抱怨它,我得到的错误是这样的:

错误:(19, 51) Kotlin:类型推断失败:没有足够的信息来推断 fun get(p0: String!): 中的参数 Y:路径!请明确指定。

这是工作的java代码:

predicates.add(builder.equal(root.get(criteria.getKey()), criteria.getValue())); <- working with Java
Run Code Online (Sandbox Code Playgroud)

任何有经验的 Kotlin 人知道这个错误的解决方法吗?我见过其他一些人有类似的问题,但我无法根据我看到的答案解决这个问题。

hibernate criteria-api kotlin

3
推荐指数
1
解决办法
778
查看次数

如何添加不同的属性以使用 jpa 规范进行查询

我正在使用 jhipster 标准和 jpa 规范来实现用于研究的端点。

好吧,它正在工作,但继续向我发送重复项。

有这个模型的prestations

public class Prestation extends AbstractAuditingEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
@SequenceGenerator(name = "sequenceGenerator")
private Long id;

@NotNull
@Column(name = "jhi_label", nullable = false)
private String label;

@Column(name = "description")
private String description;

@Column(name = "unit")
private String unit;

@NotNull
@Column(name = "activated", nullable = false)
private boolean activated;

@ManyToOne(optional = false)
@NotNull
@JsonIgnoreProperties("prestations")
private SubCategory subCategory;

@OneToMany(mappedBy = "prestation", cascade = …
Run Code Online (Sandbox Code Playgroud)

distinct criteria-api criteriaquery spring-data-jpa

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

Hibernate Criteria:从具有外键关系的两个表中选择?

我在我的mysql数据库2表中:

1.teacher(id(pk),name,phone,email)
2.student(id(pk),teacher'sid(FK),name,phone,email)
Run Code Online (Sandbox Code Playgroud)

学生表有一个外键,老师的,对于老师.id.

我想选择他们的id(teachers.id)与(student.teacher'sid)相同的老师,其中student.name ="Steven".

我创建了两个具有与表相同的类名和属性的类,并且我已经配置了映射.

@Entity
class teacher {
@Id
int id;
String name;
String phone;
String email;
}

@Entity
class student {
@Id
int id;
int teachersid;
String name;
String phone;
String email;
}
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式选择他的名字是"史蒂文"的学生:

Criteria q = session.createCriteria(student.class).add(
                Restrictions.eq("name", "stevens"));
Run Code Online (Sandbox Code Playgroud)

如何能够挽回"史蒂文"的老师?就像是

(select * from teacher(where teacher.id = student.teachersid(where student.name="stevens")))
Run Code Online (Sandbox Code Playgroud)

,但使用Hibernate Criteria Api.

提前致谢!

mysql hibernate hibernate-criteria

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

如何从时间戳对象和日期时间对象数组中提取值

如何从对象下方获取日期

Google\Cloud\Core\Timestamp Object
(

    [value:Google\Cloud\Core\Timestamp:private] => DateTimeImmutable Object
        (
            [date] => 2020-02-11 05:17:40.679449
            [timezone_type] => 2
            [timezone] => Z
        )

    [nanoSeconds:Google\Cloud\Core\Timestamp:private] => 679449000
)
Run Code Online (Sandbox Code Playgroud)

php arrays object

0
推荐指数
1
解决办法
390
查看次数