Java JPA@NamedQuery有两个表,可能吗?
我有一个虚拟问题,我需要做一个Java JPA@NamedQuery有两个表,可能吗?,java,jpa,named-query,Java,Jpa,Named Query,我有一个虚拟问题,我需要做一个@NamedQuery与其他表连接,一些简单的事情 但是在我所有的@NamedQuery中,我只处理映射的对象/表 例如,在“我的对象/表”映射的汽车中: 我正在尝试使用:@SecondaryTables,但目前没有成功 另一个有效的方法是将其他表中的所有内容作为参数提供,但我认为这在性能上并不好 比如: 有什么建议吗 提前感谢命名查询可以使用API查询可以使用的一切,因此可以明确地执行子查询。JPA的哪种实现?命名查询可以使用API查询可以使用的任何东西,因此可以
@NamedQuery
与其他表连接,一些简单的事情
但是在我所有的@NamedQuery
中,我只处理映射的对象/表
例如,在“我的对象/表”映射的汽车中:我正在尝试使用:
@SecondaryTables
,但目前没有成功
另一个有效的方法是将其他表中的所有内容作为参数提供,但我认为这在性能上并不好
比如:
有什么建议吗
提前感谢命名查询可以使用API查询可以使用的一切,因此可以明确地执行子查询。JPA的哪种实现?命名查询可以使用API查询可以使用的任何东西,因此可以明确地执行子查询。JPA的哪种实现?您试图做的不是加入。这是一个次级选择。就性能而言,它与事先获得参数一样有效 但是,如果您坚持使用subselect,那么JPA查询语言将支持它。因为它支持连接。
(7.11.8.11.子查询)。您试图做的不是加入。这是一个次级选择。就性能而言,它与事先获得参数一样有效 但是,如果您坚持使用subselect,那么JPA查询语言将支持它。因为它支持连接。
(在7.11.8.11.子查询中)。我猜您有这样的情况:
@Entity
public class Cars{
private String status;
//... something else
}
@Entity
public class CarStatus{
private String status;
private String color;
//... something else
}
query = "select c.id from Cars c join CarStatus d where c.status = d.status and d.color = 'red'"
如果是的话,改变这个
@Entity
public class Cars{
private CarStatus status; //<--THIS!!
//... something else
}
@Entity
public class CarStatus{
private String color;
//... something else
}
如果我错了,表不应该以这种方式关联,那么您应该更改查询,使用联接而不是子查询。大概是这样的:
@Entity
public class Cars{
private String status;
//... something else
}
@Entity
public class CarStatus{
private String status;
private String color;
//... something else
}
query = "select c.id from Cars c join CarStatus d where c.status = d.status and d.color = 'red'"
我猜你有这样的想法:
@Entity
public class Cars{
private String status;
//... something else
}
@Entity
public class CarStatus{
private String status;
private String color;
//... something else
}
query = "select c.id from Cars c join CarStatus d where c.status = d.status and d.color = 'red'"
如果是的话,改变这个
@Entity
public class Cars{
private CarStatus status; //<--THIS!!
//... something else
}
@Entity
public class CarStatus{
private String color;
//... something else
}
如果我错了,表不应该以这种方式关联,那么您应该更改查询,使用联接而不是子查询。大概是这样的:
@Entity
public class Cars{
private String status;
//... something else
}
@Entity
public class CarStatus{
private String status;
private String color;
//... something else
}
query = "select c.id from Cars c join CarStatus d where c.status = d.status and d.color = 'red'"
答案是肯定的,这是可能的。您需要确保列定义了要查找的表。请参阅下面的代码,您命名的查询应该在添加之后工作
@Column(table=“SECONDARY\u table”,name=“EXAMPLE\u Column\u name”)
私有字符串示例代码>答案是肯定的,这是可能的。您需要确保列定义了要查找的表。请参阅下面的代码,您命名的查询应该在添加之后工作
@Column(table=“SECONDARY\u table”,name=“EXAMPLE\u Column\u name”)
私有字符串示例代码>除非您可以使用继承、@SecondaryTable或映射(@OneToOne,…)将对象映射到第二个表,否则您必须使用@namedNativeRequesty。为了进一步帮助您,我需要更多地了解表结构以及您使用的JPA提供程序(例如EclipseLink具有可以实现这一点的扩展,它允许您使用存储过程(@NamedStoredProcedureQuery))。查询有什么问题?汽车和汽车是如何定义和映射的<代码>d。颜色=红色
无效d.color='red'
可能是正确的。除非您可以使用继承、@SecondaryTable或映射(@OneToOne,…)将对象映射到第二个表,否则您必须使用@namednaviequiry。为了进一步帮助您,我需要更多地了解表结构以及您使用的JPA提供程序(例如EclipseLink具有可以实现这一点的扩展,它允许您使用存储过程(@NamedStoredProcedureQuery))。查询有什么问题?汽车和汽车是如何定义和映射的<代码>d。颜色=红色
无效d.color='red'
可能是正确的。