我有父级(产品)和子级(书籍、家具),并且希望将产品实体映射到产品 DTO。如您所见,产品被映射并存储在数据库中的单个表中。如何映射具有子项额外详细信息的父项产品?
实体
@Entity
@Table(name = "product")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Product {
@Id
private long id;
private String productName;
}
@Entity
@DiscriminatorValue("Book")
public class Book extends Product {
private String author;
...
}
@Entity
@DiscriminatorValue("Furniture")
public class Furniture extends Product {
String color;
...
}
Run Code Online (Sandbox Code Playgroud)
数据传输组织
public class ProductDto {
private long id;
private String productName;
...
}
public class BookDto extends ProductDto {
private String author;
...
}
public class …Run Code Online (Sandbox Code Playgroud) 我正在尝试在GlassFish 3上的Java EE JPA应用程序中实现某种审计.
我@EntityListeners在我的@MappedSuperclass实体上添加了一个注释,监听器在其方法上有注释@PrePersist和@PreUpdate注释,这些注释在运行时被愉快地调用.
在这些方法中,我试图用(@Inject)一@Named,@Stateful,@SessionScoped豆(UserSession为了获得当前用户的ID).监听器类根本没有注释.
问题是我无法UserSession注入豆子; 我总是最终得到一个null价值.到目前为止,我尝试了总是注入空值的plain .我@Inject UserSession us;也尝试过UserSession us = (UserSession) ctx.lookup("java:global/application/module/UserSession");总是返回一个新对象(我验证了构造函数调用,加上对象为空).
我很确定我错过了一些关于CDI非常重要但我无法弄清楚是什么.有人可以指出我正确的方向吗?
假设以下实体类和层次结构:
@Entity
Class Ticket {
@ManyToOne(optional = true)
private Customer customer;
}
@Entity
Class Customer {}
@Entity
Class Person extends Customer {}
@Class CustomPerson extends Person {}
Run Code Online (Sandbox Code Playgroud)
如何查询具有customerPerson类型或 Person的任何子类(即CustomPerson)的所有票证?
我可以轻松地在类型上创建谓词:
Predicate p = criteriaBuilder.equal(Ticket_...type(), criteriaBuilder.literal(Person.class));
Run Code Online (Sandbox Code Playgroud)
但这会过滤掉CustomPerson.
除非有一种通用的方法来处理这个(在JPA 2.0中),如果我能在运行时确定扩展Person的所有实体,我可以克服这个问题; 在这种情况下,我可以使用
Predicate p = criteriaBuilder.in(Ticket_...type(), listOfPersonSubclasses);
Run Code Online (Sandbox Code Playgroud) 我正在研究 Spring data Cassandra 在创建实体时,我为字段提供了所需的注释,但是当我为在架构中创建二级索引提供 @Indexed 注释时,我无法在不提供允许的情况下查询索引属性过滤。有人可以告诉我如何在 Cassandra 中使用 Spring 数据注释创建二级索引吗
This is the sample cod that I am using creating a Sprind data Cassandra Entity.@Indexed annotation not creating a secondary index in Cassandra database
import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import org.springframework.data.cassandra.mapping.CassandraType;
import org.springframework.data.cassandra.mapping.Column;
import org.springframework.data.cassandra.mapping.Indexed;
import org.springframework.data.cassandra.mapping.PrimaryKey;
import org.springframework.data.cassandra.mapping.Table;
import org.springframework.data.cassandra.mapping.UserDefinedType;
import com.datastax.driver.core.DataType;
import com.suntecgroup.xelerate.platform.demo.config.SpringContainer;
import com.suntecgroup.xelerate.platform.demo.store.CustomerCassandraStore;
import com.suntecgroup.xelerate.platform.demo.store.impl.CustomerCassandraStoreImpl;
@Table(value="CustomerCassandra")
public class CustomerCassandra extends CassandraEntity<Integer> {
@PrimaryKey(value="cust_id")
private Integer custId;
@Indexed(value="name")
private String name;
@Indexed(value="email")
private String email; …Run Code Online (Sandbox Code Playgroud) 我有两个 ECS 集群,都运行 Fargate 1.3 任务(我们称它们为任务 A 和任务 B)。这两个任务都具有 awsvpc 网络类型,并且都具有自动分配的公共 IP。此外,两个集群/任务都位于同一 VPC 中。任务 A 与安全组 A 关联,任务 B 与安全组 B 关联(以及也与安全组连接的负载均衡器)。我正在尝试从任务 A 向任务 B 发出 http 请求。我 100% 确定我已正确设置安全组,即:
安全组A:
安全组B:
当我尝试从 A 向 B 发出请求时,出现超时错误。我知道这是一个安全组错误,因为如果我创建一个 Source = 无处不在的入口规则,它就会起作用。此外,如果我进去检查fargate任务A的公共IP地址,并将该IP地址添加到安全组B的入口,它也可以工作。
这里发生了什么?
amazon-web-services amazon-ecs amazon-vpc aws-security-group aws-fargate
java ×4
amazon-ecs ×1
amazon-vpc ×1
aws-fargate ×1
cdi ×1
eclipselink ×1
ejb ×1
glassfish ×1
java-ee ×1
javabeans ×1
jpa-2.0 ×1
mapstruct ×1
spring ×1
spring-boot ×1