我有两个实体,并使用多对一注释来映射它们,但是在使用另一个表id编写了查找对象的查询后,当我注释掉调用该应用程序的行和方法时,出现了一个错误,但是我想实现该功能,请帮助我
这些是我的实体类:
@Entity
@Table(name = "Contract")
public class Contract implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "contractId")
private long contractId;
@Column(name="start_date")
private Date st_date;
@Column(name="end_date")
private Date end_date;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "hotel_id", nullable = false)
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private Hotel hotel;
// getters and setters
第二个实体
@Entity
@Table(name="Hotel")
public class Hotel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="hotel_id")
private long hotel_id;
@Column(name="hotel_name")
private String hotel_name;
@Column(name="hotel_location")
private String hotel_location;
@Column(name="hotel_email")
private String hotel_email;
@Column(name="hotel_telephone")
private String hotel_telephone
// getters and setters
我的合同服务类
@Service
public class ContractService {
@Autowired
private ContractRepository contractRepository;
@Autowired
private HotelRepository hotelRepository;
public List<Contract> getAllContracts(){
return contractRepository.findAll();
}
public List<Contract> findByHotelId(Long hotelId,Pageable pageable){
return contractRepository.findByHotelId(hotelId, pageable);
}
public ResponseEntity<?> deleteContract(Long hotelId, Long contractId)
{
return contractRepository.findByIdAndHotelId(contractId,
hotelId).map(Contract -> {
contractRepository.delete(Contract);
return ResponseEntity.ok().build();
}).orElseThrow(() -> new ResourceNotFoundException("Comment not found
with ContractId " + contractId + " and hotelId " + hotelId));
}
我的合同存储库
@Repository
public interface ContractRepository extends JpaRepository<Contract, Long> {
List<Contract> findByHotelId(Long hotelId, Pageable pageable);
Optional<Contract> findByIdAndHotelId(Long id, Long hotelId);
}
我在运行项目时遇到此错误
org.springframework.beans.factory.未满足的依赖异常:创建名称为“合同控制器”的bean时出错:通过字段“合同服务”表示的依赖项未满足;嵌套异常是org.springframework.beans.factory.未满足的依赖异常:创建名称为“合同服务”的bean时出错:通过字段“合同存储库”表示的依赖项未满足;嵌套异常是org.springframework.beans.factory.BeanCreation异常:创建名称为“合同存储库”的bean时出错:初始化方法调用失败;嵌套异常是java.lang.IllegalArgument异常:未能创建方法公共抽象java.util.列表com.sunTravel.sunRest.repository.ContractRepository.findByHotelId(java.lang.长,org.springframework.data.domain.可分页)的查询!未找到酒店类型的属性ID!遍历路径:Contract.hotel.
您应该将主键从hotel_id重命名为id,然后只有存储库方法才能工作。
@Entity
@Table(name="Hotel")
public class Hotel {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name="hotel_id")
private long id;
@Column(name="hotel_name")
private String hotel_name;
@Column(name="hotel_location")
private String hotel_location;
@Column(name="hotel_email")
private String hotel_email;
@Column(name="hotel_telephone")
private String hotel_telephone
// getters and setters
第一个解决方案:基于堆栈跟踪,Spring数据在Hotel
类中查找id变量(主键)。所以请更改<code>private long hotel_id到私有长id
另一个解决方案(无需做任何更改,只需添加您自己的查询):
使用< code>@Query
编写自己的JPA查询。
示例:
@Query("SELECT contract from Contract as contract where contract.hotel.hotel_id = :hotelId")
List<Contract> findByHotelId(Long hotelId, Pageable pageable);
问题内容: 假设我有两个表,并且 我想在一个查询中将来自某些输入的数据插入到表中,该怎么做? 请,如果可以做到,请解释语法。 问题答案: MySQL不支持在单个INSERT语句中进行多表插入。奇怪的是,Oracle是我所知道的唯一一个…
我正在尝试在web.xml中映射多个servlet。在我的index.html中,我有一个操作“desktype.do”的表单,当我运行程序时,它成功了。我是这样开始的: …效果很好。它成功地编译,并且在按下我在index.html中设置的按钮后,它就会按照需要运行。在添加了额外的servlet映射之后: 我收到错误“模块尚未部署。详细信息请参阅服务器日志。构建失败(总时间;0秒)”我不确定该怎么
我总共有10行这样的 PHP 我正在尝试在一个查询中插入数据库中的所有记录?我如何在一个查询中插入数据库中的所有行?
当我映射同一个实体时,就像这里回答的那样: Hibernate与同一实体的多对多关联 在“tbl_friends”表中,我有相同含义的行。例如,我有id=1的用户和id=2的用户。在“tbl_friends”表中,当他们作为朋友链接时,我有两行 使用Hibernate或JPA引用是否可以在一行(1-2或2-1)中建立这种关系?
我正在尝试通过加入来获取记录。我对Spring是个新手。我知道每个实体(表)都有单独的存储库,在实现时需要定义主键的实体和数据类型。 谁能建议我如何通过连接两个表来获取记录。 我有两个回购如下: 我想加入以上两个实体(AEntity,BEntity)。我知道我可以使用以下内容进行自定义查询: 但是,我可以使用连接编写相同类型的查询(连接查询)。我需要有一个单独的存储库来实现其他一些类吗? 谁能帮忙
问题内容: 服务类具有一个接受多个参数的操作。这些参数作为查询参数传递给服务调用。 这些参数的列表正在增长,因此我想将它们放入包含所有这些参数的单个bean中。 你会怎么做?这有可能吗? 问题答案: 您可以使用。 在您的资源中,您只需要使用。 提供者将被自动调用。