如何解决如何在 Kotlin 的 micronaut 应用程序中从多个表中提取 DTO?
我正在尝试使用本机查询从多个表中提取 DTO 列表,但文档无济于事。 这是两个实体类:
@Entity
@Table(name="addresses")
data class Addresses (
@Id
@Column(name="address_id")
val address_id:Long=0,@Column(name="address_name")
val address_name:String="",@OneToOne
@JoinColumn(name = "emp_id")
private var pos: Employee?
)
import com.fasterxml.jackson.annotation.JsonManagedReference
import javax.persistence.*
@Entity
@Table(name = "employee")
data class Employee (
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "emp_id")
val emp_id:Long=0,@Column(name = "emp_name")
val emp_name:String="",@OneToOne(mappedBy = "pos",cascade = [CascadeType.ALL],orphanRemoval = true,fetch = FetchType.EAGER)
private var posAddress: Addresses,)
我想用这个CustomDTO来提取结果集
@Introspected
class CustomDTO (
val emp_id:Long?,val emp_name:String?,val address_name:String?
)
所以我将不得不使用本机查询才能做到这一点:
@Repository
interface EmployeeRepository : JpaRepository<Employee,Long> {
@Join(value="addresses",type = Join.Type.FETCH)
@Query("select e.emp_id,emp_name,a.address_name from employee e join addresses a on a.emp_id=e.emp_id")
fun getResult():List<CustomDTO>
}
但是当我尝试运行它时,出现错误: 实体中不存在属性 address_name:com.example.domain.Employee
有什么想法可以解决这个问题吗?
解决方法
对于任何挣扎的人:
@Query("select new com.packagename.DeliverySlotDto(ts.active,st.name) from TemplateSlot ts \n" +
" inner join DeliveryServiceType st on st.id=ts.serviceTypeId where ts.posId = :posId ")
fun findServiceTypeAndStatusDto(posId:Long):List<DeliverySlotDto>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。