我是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) 我是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) 我需要以编程方式在数据存储区中生成序列,但需要能够检测它们的存在而不是在它们已经存在的情况下创建.有人知道提取此信息所需的JDBC元数据吗?
对DatabaseMetadata进行粗略扫描并未发现合适的方法; 我可以获取所有表/视图和关联的键/索引等,但不能获取该模式的序列.有没有人知道一种方法,最好是数据库独立的,但如果没有,那么对于尽可能多的数据库(想想oracle有一个user_sequence表?但这只是一个数据库,我需要支持其他数据库).
提前致谢
我使用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的任何方法.
在将 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 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结合起来!
干杯
我有下面的模型:文章可以有一些标签,标签可以在一些文章上.所以它是与3个表的多对多关系:
当我删除标签时,我想删除:
但我当然不想删除文章中的文章.
我怎样才能做到这一点 ?
我试试这个,但它不起作用:
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) 我有一个名为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)
请帮忙.
我在文档中找不到具体的东西(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 注释是否可能?或者/它应该是什么样子?
我们正处于使用 gRPC 开发微服务的初期。我们的微服务旨在在 JVM 上运行。在我们的持久层中,我们想使用一个 ORM 库。Spring Data JPA 项目看起来很有前途。
但是有两个 spring-grpc-boot-starter 项目吗?
我应该使用哪一种?或者您推荐其他任何一种或方法吗?
spring ×6
java ×5
hibernate ×4
spring-boot ×2
sql ×2
db2 ×1
grpc ×1
grpc-java ×1
javafx ×1
jdbc ×1
jointable ×1
jpa-2.0 ×1
jpa-criteria ×1
jpql ×1
many-to-many ×1
mappedby ×1
maven ×1
pojo ×1
repository ×1
sequence ×1
spring-data ×1
tableview ×1
wildcard ×1