Java 如何从接口方法定义中调用@namedquerys?
我是Spring框架的新手,我想知道是否可以调用实体命名查询,只在接口上定义命名查询,而不进行任何实现 我想做这样的事Java 如何从接口方法定义中调用@namedquerys?,java,spring,jpa,spring-data-jpa,Java,Spring,Jpa,Spring Data Jpa,我是Spring框架的新手,我想知道是否可以调用实体命名查询,只在接口上定义命名查询,而不进行任何实现 我想做这样的事 NamedQuery(name = "StateBo.findByCountry", query = "SELECT state FROM StateBo state WHERE state.country.id = ?") @Table(name = "STATE") @Entity(name = "StateBo") public class StateBo extends
NamedQuery(name = "StateBo.findByCountry", query = "SELECT state FROM StateBo state WHERE state.country.id = ?")
@Table(name = "STATE")
@Entity(name = "StateBo")
public class StateBo extends BaseNamedBo {
private static final long serialVersionUID = 3687061742742506831L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "STATE_ID")
private Long id;
@Column(name = "ISO_CODE")
private String isoCode;
@ManyToOne
@JoinColumn(name = "COUNTRY_ID")
private CountryBo country;
// getters and setters ...
}
@Transactional
@Repository("stateDao")
public class StateDao implements IStateDao {
}
我定义了命名查询StateBo.findByBCountry,我的界面如下所示
public interface IStateDao extends JpaRepository<StateBo, Long> {
public List<StateBo> findByCountry(Long id);
}
但我有一个错误,我必须实现我在接口上定义的方法,但我不想这样做。我只想定义我的命名查询,并在我的接口中使用实体上相同的名称定义方法,而不添加该方法的实现,因为该实现基本上是名为Query的字符串。您可以使用Spring数据Jpa项目。 首先,你看 要在没有实现(仅接口)的情况下执行查询,请参阅 基本上,您不需要实现:
@Transactional
@Repository("stateDao")
public class StateDao implements IStateDao {
}
尝试删除它,看看会发生什么。自动连线注释会发生什么?因为,我正在使用存储库注释在其他类别中自动连线?自动连线无法工作,因为没有实现。Spring为您执行实现。参见指南(第一个链接),那里没有实现。Spring最初是这样做的。